我们使用下面的代码从文本文件中删除空行,但它不起作用。
function UpdatePatchLogFileEntries : Boolean;
var
a_strTextfile : TArrayOfString;
iLineCounter : Integer;
ConfFile : String;
begin
ConfFile := ExpandConstant('{sd}\patch.log');
LoadStringsFromFile(ConfFile, a_strTextfile);
for iLineCounter := 0 to GetArrayLength(a_strTextfile)-1 do
begin
if (Pos('', a_strTextfile[iLineCounter]) > 0) then
Delete(a_strTextfile[iLineCounter],1,1);
end;
SaveStringsToFile(ConfFile, a_strTextfile, False);
end;
请帮帮我。 在此先感谢。
答案 0 :(得分:2)
因为对数组进行重新索引会效率低下并且有两个用于复制文件非空行的数组会非常复杂,我建议你使用TStringList
类。它包含你需要的所有内容。在代码中我会写这样的函数:
[Code]
procedure DeleteEmptyLines(const FileName: string);
var
I: Integer;
Lines: TStringList;
begin
// create an instance of a string list
Lines := TStringList.Create;
try
// load a file specified by the input parameter
Lines.LoadFromFile(FileName);
// iterate line by line from bottom to top (because of reindexing)
for I := Lines.Count - 1 downto 0 do
begin
// check if the currently iterated line is empty (after trimming
// the text) and if so, delete it
if Trim(Lines[I]) = '' then
Lines.Delete(I);
end;
// save the cleaned-up string list back to the file
Lines.SaveToFile(FileName);
finally
// free the string list object instance
Lines.Free;
end;
end;