Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Страницы:   1 2

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо