![]() |
|
|
#1
|
|||
|
|||
|
Всем доброго времени суток. Возникла у меня проблема, вернее сразу несколько. Вот какая ситуация:
Имеется TMemo, есть пользователь, который вводит текст кириллицей (кодировка в мемо как мне известно анси). Необходимо сохранить введенный текст в файл в кодировке UTF-8. Вот в принципе и все. Я отыскал функцию StringToWideChar, которая переводит обычные строки в юникод, однако, применять эту функцию можно только для MemoEditor.Lines.Text, если просто MemoEditor.Lines, то ругается на несоответствие типов. Код:
procedure TForm1.SaveMIClick(Sender: TObject);
var WideChars: array [0..32768] of WideChar;
begin
if fName <> '' then begin
StringToWideChar ( MemoEditor.Lines.Text, WideChars, 32769 );
MemoEditor.Lines.Text.SaveToFile ( fName );
NotSaved := False;
Exit;
end;
if SaveDialog1.Execute then begin
SetName ( SaveDialog1.FileName );
MemoEditor.Lines.SaveToFile( fName );
NotSaved := False;
end;
end;Вот что-то вроде этого. Но на строке Код:
MemoEditor.Lines.Text.SaveToFile ( fName ); Подскажите как можно исправить это недоразумение, или как лучше реализовать сохранение текста в юникоде буду благодарен. |
|
#2
|
||||
|
||||
|
Как я понимаю SetName ( SaveDialog1.FileName ) просто присваивает приватной пременной класса fName значение полученное в SaveDialog1.FileName. А если это так, то почему-бы не сделать так:
Код:
MemoEditor.Lines.SaveToFile( SaveDialog1.FileName ) |
|
#3
|
|||
|
|||
|
Код:
memo1.Lines.SaveToFile('c:\npo6a.txt',Tencoding.UTF8); |
|
#4
|
|||
|
|||
|
Таки да, но проблема в другом... компилятору не нравится вот эта строчка кода:
Код:
MemoEditor.Lines.Text.SaveToFile ( fName ); Метод Lines у Memo имеет тип TStrings, а тип преобразуемых в WideChar, должен быть String (как у свойства Text у мемо)... В этом вся загвоздка. |
|
#5
|
|||
|
|||
|
beavi5, приложение пашет, но сохраняет все так же в ansi. В чем же дело
|
|
#6
|
|||
|
|||
|
в аську стукни раз6еремся 396292638
|
|
#7
|
|||
|
|||
|
Все, заработало ! ))) beavi5, премного благодарен !
![]() |
|
#8
|
|||
|
|||
|
пожалуйста.. .))
|
|
#9
|
||||
|
||||
|
Господа, ну я вас умоляю, ну читайте же вы справку:
AnsiToUtf8 function Utf8ToAnsi function Utf8ToUnicode function UnicodeToUtf8 function |
|
#10
|
|||
|
|||
|
Aristarh Dark, если использовать ети функции, тогда прийдется строки memo присваивать переменным типа стринг, потом их кодировать, потом перекодированные записывать в файловую текстовую переменную, а потом его сохранять. в итоге получиться не маленький код.))
или я не прав ![]() |