Страница 1 из 1

Как перекодировать при записи Memo1 в файл?

СообщениеДобавлено: 03.06.2012 13:31:05
Lifter
Нужно записать содержимое Memo1 в файл.
Код: Выделить всё
  Memo1.Lines.SaveToFile(ExtractFilePath(ParamStr(0)) + 'log.txt');

Сохраняет в UTF-8, а надо в ANSI, чтобы потом блокнот корректно отображал русские буквы.

Как записать в файл в кодировке ANSI?

Re: Как перекодировать при записи Memo1 в файл?

СообщениеДобавлено: 03.06.2012 13:43:15
Padre_Mortius
Код: Выделить всё
st:=TStringList.Create;
st.Clear;
for i:= 0 to Memo1.Lines.Count -1 do
begin
  st.Add(UTF8ToAnsi(Memo1.Lines[i])); 
end;
st.SaveToFile(ExtractFilePath(ParamStr(0)) + 'log.txt');
st.Free;

где-то так... писалось в браузере без проверки.

Re: Как перекодировать при записи Memo1 в файл?

СообщениеДобавлено: 03.06.2012 13:53:15
Lifter
Спасибо, работает!

Re: Как перекодировать при записи Memo1 в файл?

СообщениеДобавлено: 03.06.2012 14:04:27
Padre_Mortius
Спасибо, исправил.

Re: Как перекодировать при записи Memo1 в файл?

СообщениеДобавлено: 03.06.2012 15:50:09
daesher
Можно намного быстрее (хотя и чуть менее надёжно):
Код: Выделить всё
st:=TStringList.Create;
st.Text:=UTF8ToAnsi(Memo1.Lines.Text);
st.SaveToFile(ExtractFilePath(ParamStr(0)) + 'log.txt');
st.Free;

Re: Как перекодировать при записи Memo1 в файл?

СообщениеДобавлено: 03.06.2012 17:25:35
Lifter
daesher а можно пояснить, в чем чуть меньшая надежность?

Re: Как перекодировать при записи Memo1 в файл?

СообщениеДобавлено: 03.06.2012 17:32:17
Ism
В символах окончания строк

Re: Как перекодировать при записи Memo1 в файл?

СообщениеДобавлено: 03.06.2012 20:46:31
daesher
Ism писал(а):В символах окончания строк

В общем и в целом - да. В сочетании с UTF8 это может быть потенциально даже более опасно. Так, если, скажем, в конце третьей строки произошёл сбой последовательности UTF8, то первый способ просто даст сбой в третьей строке, а второй способ может сбить и всё последующее.

Re: Как перекодировать при записи Memo1 в файл?

СообщениеДобавлено: 03.06.2012 23:35:21
Lifter
Спасибо за пояснения!