3

我们正在使用下面的代码从文本文件中删除空行,但它不起作用。

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;

请帮我。提前致谢。

4

1 回答 1

3

因为数组的重新索引效率低下,并且有两个数组用于复制文件的非空行会不必要地复杂,我建议你使用TStringListclass. 它里面有你需要的所有东西。在代码中我会写这样的函数:

[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;
于 2013-08-26T07:04:43.947 回答