Главная страница
    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
7-42141
proofy
2003-08-06 14:06
2003.11.13
Как менять время??


1-41214
Ivolg
2003-10-28 12:17
2003.11.13
Заголовок окна!!!


3-40964
tprkv
2003-10-17 09:12
2003.11.13
Можно ли в таблице PARADOX сделать поле длинее 255 символов


1-41417
denis24
2003-10-29 15:36
2003.11.13
спикер


3-41092
Master-Igor
2003-10-23 01:01
2003.11.13
когда я добавляю поле в ДБ видаєт ошибку Non-blob column in table





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