目标是在文本文档的开头插入多行(一次)。
但我发现的方法一直存在问题。我试图调整它们,但它包含副作用问题。
两个问题:
- 追加到文件末尾而不是插入行位置。
- 在目前的设计中,它附加文件 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;
最佳答案
无法向文件中插入行。您必须重新创建整个文件。
CurStepChanged
为安装的每个步骤触发。您将只想在其中一个步骤中插入这些行(可能是ssInstall
或ssPostInstall
)
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/