如何防止TStrings.SaveToFile创建最后一个空行?

Fab*_*zio 8 delphi tstringlist

我有一个.\input.txt像这样的文件:

aaa
bbb
ccc
Run Code Online (Sandbox Code Playgroud)

如果我使用读取并将其TStrings.LoadFromFile写回(即使不应用任何更改)TStrings.SaveToFile,则会在输出文件的末尾创建一个空行。

var
  Lines : TStrings;
begin
  Lines := TStringList.Create;
  try
    Lines.LoadFromFile('.\input.txt');

    //...

    Lines.SaveToFile('.\output.txt');
  finally
    Lines.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

使用该TStrings.Text属性可以观察到相同的行为,该属性将返回一个在其末尾包含空行的字符串。

Uwe*_*abe 12

对于Delphi 10.1和更高版本,有一个属性可以TrailingLineBreak控制此行为。

当TrailingLineBreak属性为True(默认值)时,Text属性将在最后一行之后包含换行符。如果为False,则Text值将不包含最后一行之后的换行符。这也可以由soTrailingLineBreak选项控制。