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

Вниз

Unicode   Найти похожие ветки 

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

Как сохранить файл в кодировке 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. Что можете подсказать?


 
Dimaxx ©   (2008-01-26 11:22) [1]

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

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


 
Riply ©   (2008-01-26 11:22) [2]

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

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

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


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

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


 
Riply ©   (2008-01-26 11:43) [4]

> [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:47) [5]

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


 
Riply ©   (2008-01-26 11:51) [6]

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

Может
uses
WideStrings;

TWideStringList

?


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

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


 
Leonid Troyanovsky ©   (2008-01-26 12:02) [8]


> Res   (26.01.08 11:47) [5]

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

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

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2008-01-26 12:03) [9]


> Res   (26.01.08 11:54) [7]

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

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

--
Regards, LVT.


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


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

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


 
MetalFan ©   (2008-01-26 12:09) [11]

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

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


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


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

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


 
Leonid Troyanovsky ©   (2008-01-26 12:34) [13]


> 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.


 
Anatoly Podgoretsky ©   (2008-01-26 13:15) [14]

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


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


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

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


 
Palladin ©   (2008-01-26 13:50) [16]

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


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

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

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


 
ketmar ©   (2008-01-27 13:22) [18]

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



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

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

Наверх




Память: 0.5 MB
Время: 0.02 c
1-1194445289
Ирина
2007-11-07 17:21
2008.02.17
Работа с Excel через делфи


2-1201186963
SveTT
2008-01-24 18:02
2008.02.17
Условие на MAX значение


1-1194198435
Slim
2007-11-04 20:47
2008.02.17
DBLookupComboboxEh1


15-1200159007
anton773
2008-01-12 20:30
2008.02.17
listbox.items.add в .NET


2-1200997439
Gusev
2008-01-22 13:23
2008.02.17
Как реализовать "права пользователя" в своей программе? (БД)