text-files - 使用 Inno Setup 脚本将行插入文本文件?

标签 text-files inno-setup pascalscript

目标是在文本文档的开头插入多行(一次)。

但我发现的方法一直存在问题。我试图调整它们,但它包含副作用问题。

两个问题:

  1. 追加到文件末尾而不是插入行位置。
  2. 在目前的设计中,它附加文件 3 次。

引用其他脚本,我发现包含 Result := 的两行都导致了未知标识符。

引用资料:

[Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
  ErrorCode: Integer;
  FileName: string;
  lines : TArrayOfString;
begin
  fileName := ExpandConstant('{userappdata}\xy');
  fileName := AddBackslash(FileName) + 'zlt.net';
  SetArrayLength(lines, 6); 
  lines[0] := 'A';
  lines[1] := 'B';
  lines[2] := 'C';
  lines[3] := 'D';
  lines[4] := 'E';
  lines[5] := 'F';
  SaveStringsToFile(filename,lines,true);
end;

最佳答案

  1. 无法向文件中插入行。您必须重新创建整个文件。

  2. CurStepChanged 为安装的每个步骤触发。您将只想在其中一个步骤中插入这些行(可能是 ssInstallssPostInstall)

procedure CurStepChanged(CurStep: TSetupStep);
var
  Lines: TStringList;
begin
  if CurStep = ssPostInstall then
  begin
    Lines := TStringList.Create;
    try
      Lines.LoadFromFile(FileName);

      Lines.Insert(0, 'A');
      Lines.Insert(1, 'B');
      Lines.Insert(2, 'C');
      Lines.Insert(3, 'D');
      Lines.Insert(4, 'E');
      Lines.Insert(5, 'F');

      Lines.SaveToFile(FileName);
    finally
      Lines.Free;
    end;
  end;
end;

代码将整个文件加载到内存中。如果文件太大,这可能是个问题。但对于小于几十 MB 的文件来说,这应该不是问题。此外,重复调用 Insert 效率不高。但是对于小文件和几行,这应该也不是问题。

关于text-files - 使用 Inno Setup 脚本将行插入文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73711995/

相关文章:

installation - 大型 Inno Setup 安装程序,其压缩数据位于安装程序二进制文件之外

json - Inno 安装程序 : How can I edit and retrieve value from a children section of a JSON file

android - 为什么文本文件的编码从 UTF-8 更改为 ANSI(以及如何解决这个问题)?

c - 在C中将一个单词(char [])插入一个结构单词(char [])中

java - 如何在 java/jsp 中使用 split() 读取逗号分隔的文本文件来分隔每个元素

inno-setup - 根据用户输入更改 AppID 和 AppName

inno-setup - 防止 Inno Setup 在卸载时删除一些文件

inno-setup - 使用文件部分自定义页面中的两个/多个选定目录

java - 在 Java 中逐行读取文本文件的最快方法