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

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

Unicode


Res ©   (2008-01-26 11:14:00) 

Как сохранить файл в кодировке Unicode? Есть вот такая функция:

Function TranslateAnsiToUnicode(Src: string): WideString;
var
 i : integer;
 S : AnsiChar;
 D : WideChar;
 R : WideString;
 t : Tstrings;
begin
 R := '';
 for i := 1 to Length(Src) do
 begin
   S := Src[i];
   // API function. Unit Windows
   MultiByteToWideChar(CP_ACP, 0, @S, 1, @D, 1);
   R := R + D;
 end;
 Result := R;
end;

Но к сожалению файл все равно сохраняется в ansi. Что можете подсказать?


ketmar   (2008-01-27 13:22:00) [1]

самый большой бред — это само наличие оной функции. зачем просто не присвоить AnsiString WideString'у?


Anatoly Podgoretsky   (2008-01-27 00:55:00) [2]

> Res  (26.01.2008 13:44:15)  [15]

На слабо не стоит брать, а советов дали достаточно.


Palladin   (2008-01-26 13:50:00) [3]

уже подсказали


Res   (2008-01-26 13:44:00) [4]


> Большой бред.

Подскажите тогда пожалуйста, что не бред )


Anatoly Podgoretsky   (2008-01-26 13:15:00) [5]

Большой бред.


Leonid Troyanovsky   (2008-01-26 12:34:00) [6]


> Res   (26.01.08 12:05) [10]

> > Сохранить строку в файл не умеем?
>
> нет, подскажите как)))


 with TFileStream.Create('myfile.ext', fmCreate or fmOpenWrite) do
   try
     WriteBuffer(R[1], Length(R)*2);
   finally
     Free;
   end;

Только, в Function TranslateAnsiToUnicode у тебя бред написан.

--
Regards, LVT.


Res   (2008-01-26 12:24:00) [7]


> преобразование в юникод произойдет автоматически при
> присвоении WideString := AnsiString.
> для сохранения WideString в файл можно написать так:
>
>  SomeFileStream.Write( lWideString[1], Length(lWideString)
> * SizeOf(lWideString[1]));

А можно пример, т.е. от создания SomeFileStream(ya.ru не знает такого ) до записи. а?


MetalFan   (2008-01-26 12:09:00) [8]

преобразование в юникод произойдет автоматически при
присвоении WideString := AnsiString.
для сохранения WideString в файл можно написать так:

 SomeFileStream.Write( lWideString[1], Length(lWideString) * SizeOf(lWideString[1]));


Res   (2008-01-26 12:05:00) [9]


> А нах ее в лист пихать?
> Сохранить строку в файл не умеем?

нет, подскажите как)))


Leonid Troyanovsky   (2008-01-26 12:03:00) [10]


> Res   (26.01.08 11:54) [7]

> uses WideStrings; Модуль не найден

Не повезло тебе.

--
Regards, LVT.


Leonid Troyanovsky   (2008-01-26 12:02:00) [11]


> Res   (26.01.08 11:47) [5]

> pch:=Tstringlist.Create;
> И как быть если обратно преобразует?

А нах ее в лист пихать?
Сохранить строку в файл не умеем?

--
Regards, LVT.


Res   (2008-01-26 11:54:00) [12]

uses WideStrings; Модуль не найден


Riply   (2008-01-26 11:51:00) [13]

> [5] Res   (26.01.08 11:47)
> pch:=Tstringlist.Create;
> И как быть если обратно преобразует?

Может
uses
WideStrings;

TWideStringList

?


Res   (2008-01-26 11:47:00) [14]

pch:=Tstringlist.Create;
И как быть если обратно преобразует?


Riply   (2008-01-26 11:43:00) [15]

> [3] Res   (26.01.08 11:38)
> pch.Add(TranslateAnsiToUnicode(name+' = '+inttostr(id)));
> pch.SaveToFile('skill_pch.txt');

Кто такой pch ?
Подозреваю, что в pch.Add(TranslateAnsiToUnicode(name+' = '+inttostr(id)))
строка преобразуется обратно в ANSI.


Res   (2008-01-26 11:38:00) [16]

pch.Add(TranslateAnsiToUnicode(name+' = '+inttostr(id)));
pch.SaveToFile('skill_pch.txt');


Dimaxx   (2008-01-26 11:22:00) [17]

Это только функция. Покажи свой код сохранения. 100-пудово там что-то неправильно делаешь.

PS: А не проще ли всю строку конвертировать сразу, а не извращаться с каждым символом?


Riply   (2008-01-26 11:22:00) [18]

> [0] Res   (26.01.08 11:14)
> Но к сожалению файл все равно сохраняется в ansi. Что можете подсказать?

Не вижу сохранения в файл.  

P.S.
IHMO, может почитать Help по MultiByteToWideChar ?


Наверх

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