您根本不应该使用旧的 Pascal I/O。这在 80 年代就发挥了作用,但在今天已经过时了。
本世纪,您可以使用TStringList。这在 Delphi 中非常常用。例如,VCL 控件使用TStrings 来访问备忘录的文本行和组合框或列表框的项目。
var SL := TStringList.Create;
try
SL.Add('∫cos(x)dx = sin(x) + C');
SL.Add('¬(a ∧ b) ⇔ ¬a ∨ ¬b');
SL.SaveToFile(FileName, TEncoding.UTF8);
finally
SL.Free;
end;
如果需要更高级的需求,您可以使用TStreamWriter:
var SW := TStreamWriter.Create(FileName, False, TEncoding.UTF8);
try
SW.WriteLine('αβγδε');
SW.WriteLine('ωφψξη');
finally
SW.Free;
end;
对于非常简单的需求,IOUtils.pas 中有新的 TFile 方法:
var S := '⌬ is aromatic.';
TFile.WriteAllText(FileName, S, TEncoding.UTF8); // string (possibly with linebreaks)
var Lines: TArray<string>;
Lines := ['☃ is cold.', '☼ is hot.'];
TFile.WriteAllLines(FileName, Lines, TEncoding.UTF8); // string array
如您所见,所有这些现代选项都允许您将 UTF8 指定为编码。如果您更喜欢使用其他编码,例如 UTF16,也可以。
忘记AssignFile、Reset、Rewrite、Append、CloseFile等吧。