![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сохранить файл в нужной кодировке
eklmn © (2004-07-22 09:24:00)Проблема, кажется, простая.
Есть список list: TStrings,
который сохраняется в файл: list.savetofile('asf.txt').
По умолчанию кодировка файла win-1251. Как можно сохранить в досовской кодировке?
Заранее благодарен за помощь.
Anatoly Podgoretsky (2004-07-22 10:49:00) [1]Да
eklmn (2004-07-22 10:20:00) [2]
> нужно перевести файлы(*.txt) из кодировки Dos в Windows.
Насколько понимаю, так же, только использовать OEMToChar
Reindeer Moss Eater (2004-07-22 10:16:00) [3]На вопрос по сабжу уже ответили
vic (2004-07-22 10:14:00) [4]а можно вопрос по сабжу:
нужно перевести файлы(*.txt) из кодировки Dos в Windows.
Как?
Думкин (2004-07-22 10:12:00) [5]> Просто со String(хоть тоже указатель) работа Дельфи устроена сложнее
Опять же. Речь идет о длинных строках.
Думкин (2004-07-22 10:10:00) [6]> 19] KSergey © (22.07.04 10:07)
> [20] Anatoly Podgoretsky © (22.07.04 10:09)
Ну да, это и имел в виду. :(
Anatoly Podgoretsky (2004-07-22 10:09:00) [7]Не обязатель, достаточно объявить статически, что и сделано, память надо выделять под данные на которые показывает PCharVar
KSergey (2004-07-22 10:07:00) [8]Под PChar - нет
При определении переменной под ее хранение и так выделится память (в текущих реализациях - 4 байта)
Осталось только разобраться что же это такое на самом деле - PChar
Думкин (2004-07-22 10:07:00) [9]> [17] eklmn (22.07.04 10:04)
если с ним голяком работать - то да. Это указатель и все.
но всегда можно так PChar(String).
Просто со String(хоть тоже указатель) работа Дельфи устроена сложнее.
eklmn (2004-07-22 10:04:00) [10]
> А с неинициализированной PChar
Еще ламерский вопрос, на будущее: под пчар обязательно выделять память?
Думкин (2004-07-22 10:02:00) [11]> [14] eklmn (22.07.04 10:00)
> Ну вот, наконец-то конкретный ответ на конкретный вопрос.
А мне казалось, что ответ дан в [1]. Только с PChar работать уметь надо, а это уже другой вопрос.
KSergey (2004-07-22 10:02:00) [12]Остальные ответы были не менее конкретные
Просто они предполагали самостоятельную работу, всегда идущую на пользу ;)
eklmn (2004-07-22 10:00:00) [13]
> FTextBuf: String;
>
> CharToOemBuff (PChar(FTextBuf), PChar(FTextBuf), Length(FTextBuf));
Ну вот, наконец-то конкретный ответ на конкретный вопрос. Спасибо.
> Вот так вот и определен?? И такого класса объект создается?
> Так нельзя. Надо использовать TStringList
По-моему, без разницы. Я пишу list:=TStringList.create. Это и в хелпе есть. Я всегда так делал - без проблем, сейчас просто кодировку нужно поменять.
Reindeer Moss Eater (2004-07-22 10:00:00) [14]s1:='asdf';
Setlength(s2,Length(s1));
CharToOEM(PChar(s1),PChar(s2));
Alx2 (2004-07-22 09:58:00) [15]>Я уже пытался, пишу:
>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 09:58:00) [16]KSergey
У него трабл все равно не с этим связан.
А с неинициализированной PChar
KSergey (2004-07-22 09:57:00) [17]> [8] Reindeer Moss Eater © (22.07.04 09:52)
> > list: TStrings,
>
> Вот так вот и определен?? И такого класса объект создается?
> Так нельзя
>
> Так нельзя советовать. А определять переменные - можно.
Хорошо, согласен.
Тогда переформулирую в уточняющий вопрос: а какого класса объект создается?
Думкин (2004-07-22 09:56:00) [18]лучше юзай
var s1,s2:String;
Reindeer Moss Eater (2004-07-22 09:52:00) [19]> list: TStrings,
Вот так вот и определен?? И такого класса объект создается? Так нельзя
Так нельзя советовать. А определять переменные - можно.
KSergey (2004-07-22 09:51:00) [20]FTextBuf: String;
CharToOemBuff (PChar(FTextBuf), PChar(FTextBuf), Length(FTextBuf));
Или как вариант - сохранять через поток (TStrings.SaveToStream), могу дать простейшую надстройку над TFileStream, которая умеет сохранять с конвертированием (впрочем, все просто, понятно).
> list: TStrings,
Вот так вот и определен?? И такого класса объект создается? Так нельзя. Надо использовать TStringList