Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.058 c
2-1201253023
Lexa11_2002
2008-01-25 12:23
2008.02.17
TCheckListBox


3-1191490877
Ega23
2007-10-04 13:41
2008.02.17
TDataLink - распознать Insert и Edit


3-1191298911
Memed_1971
2007-10-02 08:21
2008.02.17
calculate string SQL server 20005


3-1191590503
denmin
2007-10-05 17:21
2008.02.17
Рушится Paradox.


2-1201009454
savyhinst
2008-01-22 16:44
2008.02.17
Pascal Script





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский