![]() |
|
#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 присваивать переменным типа стринг, потом их кодировать, потом перекодированные записывать в файловую текстовую переменную, а потом его сохранять. в итоге получиться не маленький код.))
или я не прав ![]() |