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

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

Сохранить файл в Unicode [D7, WinXP]


Ярослав ©   (2005-06-08 13:28:00) 

Я создаю текстовый файл и записываю в него текст, как мне сделать чтобы полученный файл был в формате Unicode?


PVOzerski   (2005-06-08 17:00:00) [1]

Делаешь, например, такой фокус: резервируешь в исходной AnsiString 1-й символ. Например, добавляешь в начало строки пробел (или любой другой символ - я бы только насчет #0 остерегся). После присвоения WideString'у значения используешь процедуру move для подстановки этих символов.

Вот так, например:
const
sign: array[0..1] of AnsiChar = #$FF#$FE;
var
s: string;
ws: widestring;
f: file;
begin
s := ' Вася, привет!'#13#10'Вася, пока!';
ws := s;
move(sign, ws[1], 2);
assignfile(f, 'Vasya.txt');
rewrite(f, 1);
blockwrite(f, ws[1], length(ws) * sizeof(WideChar));
closefile(f);
end.


Ярослав   (2005-06-08 14:51:00) [2]

Ну никак у меня не получается...


Ярослав   (2005-06-08 14:30:00) [3]

Ну а как мне их туда записать то


Суслик   (2005-06-08 14:26:00) [4]


>  FF FE

они показывают порядок байтов: сначала старший потом младший или наоброт.


TUser   (2005-06-08 14:24:00) [5]

Записать туда сначала эти 2 символа


Ярослав   (2005-06-08 14:23:00) [6]

Хорошо, только не совсем правильный получается файл, если его в блокноте открыть а затем сохранить то в начале файла появятся два символа с кодами FF FE и 12 04 (яю если в hex редакторе смотреть)
У меня из-за их отсутствия программа не работает, после того как в блокноте открою и сохраню, все ОК, а как бы сделать чтобы они сразу появлялись там?


PVOzerski   (2005-06-08 13:42:00) [7]

Ну, писать туда Unicode - что еще скажешь?
Например, так:
var
 s: string;
 ws: widestring;
 f: file;
begin
 s := 'Вася, привет!'#13#10'Вася, пока!';
 ws := s;
 assignfile(f, 'Vasya.txt');
 rewrite(f, 1);
 blockwrite(f, ws[1], length(ws) * sizeof(WideChar));
 closefile(f);
end;


Наверх

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