Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.08;
Скачать: CL | DM;

Вниз

Как сохранить файл в нужной кодировке   Найти похожие ветки 

 
eklmn   (2004-07-22 09:24) [0]

Проблема, кажется, простая.
Есть список list: TStrings,
который сохраняется в файл: list.savetofile("asf.txt").
По умолчанию кодировка файла win-1251. Как можно сохранить в досовской кодировке?

Заранее благодарен за помощь.


 
Reindeer Moss Eater ©   (2004-07-22 09:26) [1]

CharToOem


 
eklmn   (2004-07-22 09:33) [2]


> CharToOem

Я уже пытался, пишу:
var s1,s2:PChar;
...
s1:="asdf";
CharToOEM(s1,s2);
Почему-то пишет Access Violation. Что я неправильно делаю?


 
Думкин ©   (2004-07-22 09:40) [3]

> var s1,s2:PChar;
> ...
> s1:="asdf";
> CharToOEM(s1,s2);

А память? И чем string не угодил?


 
eklmn   (2004-07-22 09:43) [4]


> А память? И чем string не угодил?


Можно в этом месте поподробнее?


 
Думкин ©   (2004-07-22 09:45) [5]

В каком? там 2 места.


 
eklmn   (2004-07-22 09:50) [6]


> В каком? там 2 места.


Меня насчет памяти интересует.


 
KSergey ©   (2004-07-22 09:51) [7]

FTextBuf: String;

CharToOemBuff (PChar(FTextBuf), PChar(FTextBuf), Length(FTextBuf));

Или как вариант - сохранять через поток (TStrings.SaveToStream), могу дать простейшую надстройку над TFileStream, которая умеет сохранять с конвертированием (впрочем, все просто, понятно).

> list: TStrings,

Вот так вот и определен?? И такого класса объект создается? Так нельзя. Надо использовать TStringList


 
Reindeer Moss Eater ©   (2004-07-22 09:52) [8]

> list: TStrings,

Вот так вот и определен?? И такого класса объект создается? Так нельзя


Так нельзя советовать. А определять переменные - можно.


 
Думкин ©   (2004-07-22 09:56) [9]

лучше юзай
var s1,s2:String;


 
KSergey ©   (2004-07-22 09:57) [10]

> [8] Reindeer Moss Eater ©   (22.07.04 09:52)
> > list: TStrings,
>
> Вот так вот и определен?? И такого класса объект создается?
> Так нельзя
>
> Так нельзя советовать. А определять переменные - можно.

Хорошо, согласен.

Тогда переформулирую в уточняющий вопрос: а какого класса объект создается?


 
Reindeer Moss Eater ©   (2004-07-22 09:58) [11]

KSergey
У него трабл все равно не с этим связан.
А с неинициализированной PChar


 
Alx2 ©   (2004-07-22 09:58) [12]

>Я уже пытался, пишу:
>var s1,s2:PChar;
>..
>s1:="asdf";
>CharToOEM(s1,s2);
>Почему-то пишет Access Violation. Что я неправильно делаю?

Var S : String;
Begin
S := "fsdkjhgslkd";
CharToOem(PChar(S),PChar(S));
End;


 
Reindeer Moss Eater ©   (2004-07-22 10:00) [13]

s1:="asdf";
Setlength(s2,Length(s1));
CharToOEM(PChar(s1),PChar(s2));


 
eklmn   (2004-07-22 10:00) [14]


> FTextBuf: String;
>
> CharToOemBuff (PChar(FTextBuf), PChar(FTextBuf), Length(FTextBuf));

Ну вот, наконец-то конкретный ответ на конкретный вопрос. Спасибо.


> Вот так вот и определен?? И такого класса объект создается?
> Так нельзя. Надо использовать TStringList

По-моему, без разницы. Я пишу list:=TStringList.create. Это и в хелпе есть. Я всегда так делал - без проблем, сейчас просто кодировку нужно поменять.


 
KSergey ©   (2004-07-22 10:02) [15]

Остальные ответы были не менее конкретные
Просто они предполагали самостоятельную работу, всегда идущую на пользу ;)


 
Думкин ©   (2004-07-22 10:02) [16]

> [14] eklmn   (22.07.04 10:00)
> Ну вот, наконец-то конкретный ответ на конкретный вопрос.

А мне казалось, что ответ дан в [1]. Только с PChar работать уметь надо, а это уже другой вопрос.


 
eklmn   (2004-07-22 10:04) [17]


> А с неинициализированной PChar


Еще ламерский вопрос, на будущее: под пчар обязательно выделять память?


 
Думкин ©   (2004-07-22 10:07) [18]

> [17] eklmn   (22.07.04 10:04)

если с ним голяком работать - то да. Это указатель и все.
но всегда можно так PChar(String).
Просто со String(хоть тоже указатель) работа Дельфи устроена сложнее.


 
KSergey ©   (2004-07-22 10:07) [19]

Под PChar - нет
При определении переменной под ее хранение и так выделится память (в текущих реализациях - 4 байта)
Осталось только разобраться что же это такое на самом деле - PChar


 
Anatoly Podgoretsky ©   (2004-07-22 10:09) [20]

Не обязатель, достаточно объявить статически, что и сделано, память надо выделять под данные на которые показывает PCharVar


 
Думкин ©   (2004-07-22 10:10) [21]

> 19] KSergey ©   (22.07.04 10:07)
> [20] Anatoly Podgoretsky ©   (22.07.04 10:09)

Ну да, это и имел в виду. :(


 
Думкин ©   (2004-07-22 10:12) [22]

> Просто со String(хоть тоже указатель) работа Дельфи устроена сложнее

Опять же. Речь идет о длинных строках.


 
vic   (2004-07-22 10:14) [23]

а можно вопрос по сабжу:
нужно перевести файлы(*.txt) из кодировки Dos в Windows.
Как?


 
Reindeer Moss Eater ©   (2004-07-22 10:16) [24]

На вопрос по сабжу уже ответили


 
eklmn   (2004-07-22 10:20) [25]


> нужно перевести файлы(*.txt) из кодировки Dos в Windows.


Насколько понимаю, так же, только использовать OEMToChar


 
Anatoly Podgoretsky ©   (2004-07-22 10:49) [26]

Да



Страницы: 1 вся ветка

Текущий архив: 2004.08.08;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.022 c
1-1090843038
Roma
2004-07-26 15:57
2004.08.08
Как сделать, чтобы кнопка после ее нжатия оставалась утопленной


3-1089787441
dk-soft
2004-07-14 10:44
2004.08.08
QuantumGrid доступ к данным через FIB


3-1089729699
Rostislav Rotaru
2004-07-13 18:41
2004.08.08
Alignment


1-1090862637
-= MAX =-
2004-07-26 21:23
2004.08.08
Передать переменную из одного модального окна в другое


1-1090821793
Андрей Л.
2004-07-26 10:03
2004.08.08
Как выделить узел в TreeView правой клавишей мыши?