Меня натурально вштырило.

- Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
Var F,F1: Text;
S: AnsiString;
begin
AssignFile(F,'History'); Reset(F);
AssignFile(F1,'Result'); Rewrite(F1);
Memo1.Clear;
Memo1.Append('Тест');
while not EOF(F) do
begin
Readln(F,S);
Writeln(F1,ConsoleToUTF8(s));
Memo1.Append(ConsoleToUtf8(S));
end;
CloseFile(F);
CloseFile(F1);
end;
Исходный файл в cp866. Как думаете, что оказалось в файле Result?
Строки, правильно перекодированные в cp1251!
CodeTyphon 2.40.
Так что, все проеброзования utf8-ansi-oem поломаны.
Соответственно SysToUtf8 вообще никакого действия на строку не оказывает.
Есть повод... отказаться... (от чего, подумали? Правильно!) от использования файлов не в UTF8.
padre_mortius: Аккуратней с выражениями. Нарушаете пункт 2 правил