Форум: "Начинающим";
Текущий архив: 2008.02.17;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.05 c