![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 ?