我有一个.\input.txt
文件,如下所示:
aaa
bbb
ccc
如果我使用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;
使用TStrings.Text
属性可以观察到相同的行为,该属性将返回一个末尾包含空行的字符串。
3条答案
按热度按时间w8f9ii691#
对于 Delphi 10.1和更新版本,有一个属性
TrailingLineBreak
控制此行为。当TrailingLineBreak属性为True(默认值)时,Text属性将在最后一行后包含换行符。如果为False,则Text值在最后一行后不包含换行符。这也可以由soTrailingLineBreak选项控制。
ee7vknir2#
对于 Delphi 10.1(柏林)或更新版本,最佳解决方案在Uwe的回答中描述。
对于较旧的 Delphi 版本,我通过创建
TStringList
的子类并重写TStrings.GetTextStr
虚函数找到了解决方案,但我很高兴知道是否有更好的解决方案,或者其他人是否在我的解决方案中发现了错误接口:
实现方式:
示例:
nxowjjhe3#
怎么样: