Inno Setup:从测试文件中删除空行

时间:2013-08-26 06:14:03

标签: inno-setup

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

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;

请帮帮我。 在此先感谢。

1 个答案:

答案 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;