Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Вниз

Нужна помощь с переводом в Unicode.   Найти похожие ветки 

 
Golleador   (2003-10-27 23:21) [0]

Подскажите, плз, как можно строку конвертировать в Unicode.
Пробовал функцией StringToWideChar(FileName, CFileName, 80), но не получилось...


 
Ломброзо   (2003-10-27 23:29) [1]

С какими целями?


 
Islander   (2003-10-27 23:31) [2]

s: string;
w: widestring;
begin

s:="blablabla";
w:= WideString (s);

Понятно?


 
Ломброзо   (2003-10-27 23:51) [3]

> Islander (27.10.03 23:31) [2]

Это даже первоклассник знает. Ну получили вы Widestring - а дальше что вы с ней делать будете? Ну разве что в базу положить. В контрол её начнете выводить - дык она опять в Ansi превратится, и хорошо, если с той же LCID, а иначе швед увидит в откомпилированной в Windows с русской локалью программе иероглифы, а никакой не юникод. В файл ее записать? так функции Delphi опять-таки под ANSI заточены, и тут уже соображать надо, как ее в файл записать...
так что вот так.


 
Golleador   (2003-10-27 23:59) [4]

Вот мне и надо с файла считать ANSI, а в другой файл записать в Unicode.
Вот я попробовал, но ничего не получилось.

procedure TForm1.Button1Click(Sender: TObject);

var
infile, outfile: TextFile;
x: string;
c: widestring ;
begin
assignfile(infile, "D:\1.TXT");
assignfile(outfile, "D:\11.TXT");
reset(infile);
rewrite(outfile);
while not eof(infile) do
begin
readln(infile, x);
c:=WideString(x);
writeln(outfile, c);
end;
closefile(infile);
closefile(outfile);
end;

И как мне быть...


 
Ломброзо   (2003-10-28 00:15) [5]

Не очень опитмально, но примерно так.

program Project2;
{$APPTYPE CONSOLE}
uses SysUtils;

var F: TextFile;
UF: File of WideChar;
aString: string;
uString: WideString;
uChar : WideChar;
i : integer;
uBOM : WideChar;
const BOM = $FEFF;
begin
uBOM := WideChar(BOM);
AssignFile(F, "C:\a.txt");
AssignFile(UF, "C:\ua.txt");
Reset(F);
Rewrite(UF);
Write(UF, uBOM );
while not EOF(F) do
begin
Readln(F, aString);
uString := aString;
for i := 1 to Length(uString) do
begin
uChar := uString[i];
Write(UF, uChar);
end;
end;
CloseFile(UF);
CloseFile(F);
Readln;
end.


 
Ломброзо   (2003-10-28 00:19) [6]

Лучше как-нить BlockRead/BlockWrite пришить, цикл по каждому символу - неоптимально.
BOM - это сигнатура юникодового файла.


 
Golleador   (2003-10-28 00:25) [7]

Все действительно работает. Только вот кроме одного. Когда идет в файле новая строка, при кодировании просто её нет. А когда конвертируешь снова в ANSI, то перехода на новую строку нет. Просто получаются все слова слитно. Вот в этом беда.


 
Ломброзо   (2003-10-28 00:40) [8]

уже все разжевал вроде ))

var
...
uBOM : WideChar;
uCr : WideChar;
uLf : WideChar;
const BOM = $FEFF;
const CR = $000D;
const LF = $000A;
begin
uBOM := WideChar(BOM);
uCr := WideChar(CR);
uLf := WideChar(LF);

...
for i := 1 to Length(uString) do
begin
uChar := uString[i];
Write(UF, uChar);
end;
Write(UF, uCr, uLf);


 
Golleador   (2003-10-28 00:44) [9]

Все получилось.
Большое спасибо. Большое спасибо.



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

Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.036 c
1-41278
Nikolay M.
2003-10-31 11:32
2003.11.13
Ручной отлов Exception-ов - ?


6-41868
BorH
2003-09-08 22:00
2003.11.13
АПИ и СОКЕТЫ


14-42134
BasjaB
2003-10-22 11:52
2003.11.13
Туплю


14-42037
Brahman
2003-10-16 12:23
2003.11.13
В осени что-то есть:)


4-42291
DVM
2003-09-10 17:24
2003.11.13
Как закрыть файл отображенный в память после зависания?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский