gpt4 book ai didi

inno-setup - 使用新行显示 Inno 安装程序中文件中的文本

转载 作者:行者123 更新时间:2023-12-04 04:42:01 26 4
gpt4 key购买 nike

我正在尝试将从文件中读取的一些文本嵌入到 Inno 安装程序中。理想情况下,这将发生在预处理器 (ISPP) 中,因此无法修改文本。我能够阅读文本但无法显示任何换行符:

#define FileHandle
#define FileLine
#define ReadmeText ""

#for {FileHandle = FileOpen("README.txt"); FileHandle && !FileEof(FileHandle); FileLine = FileRead(FileHandle)} ReadmeText = ReadmeText + FileLine

#if FileHandle
#expr FileClose(FileHandle)
#endif

我试图在附加每一行时插入特殊字符,但在预处理器中似乎没有任何字符(例如“\n”、“%n”、“#13”)。

我正在将文本添加到 TMemo领域,目前使用:
Memo.Text := '{#ReadmeText}';

如果我可以将文件解析为行数组,则可以使用 Memo.Lines.AddLine()函数,但我不确定是否可以在预处理器中创建一个可变大小的数组,然后在 Pascal 脚本中使用它。

最佳答案

我认为这可以解决问题:

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program

[Code]

procedure InitializeWizard;
var
Memo: TNewMemo;
Form: TSetupForm;
begin
Form := CreateCustomForm;
try
Form.Position := poScreenCenter;
Memo := TNewMemo.Create(Form);
Memo.Parent := Form;
Memo.Align := alClient;
#define FileLine
#define FileHandle
#sub ProcessFileLine
#emit ' Memo.Lines.Add(''' + FileLine + ''');'
#endsub
#for {FileHandle = FileOpen("Readme.txt"); \
FileHandle && !FileEof(FileHandle); FileLine = FileRead(FileHandle)} \
ProcessFileLine
#if FileHandle
#expr FileClose(FileHandle)
#endif
Form.ShowModal;
finally
Form.Free;
end;
end;

#expr SaveToFile("c:\PreprocessedScript.iss")

或者,您可以通过这种方式创建和填充数组:

#define FilesSource "Readme.txt"
#define FileLine
#define FileIndex
#define FileCount
#define FileHandle
#dim FileList[65536]
#sub ProcessFileLine
#expr FileList[FileCount] = FileLine
#expr FileCount = ++FileCount
#endsub
#for {FileHandle = FileOpen(FilesSource); \
FileHandle && !FileEof(FileHandle); \
FileLine = FileRead(FileHandle)} \
ProcessFileLine
#if FileHandle
#expr FileClose(FileHandle)
#endif

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program

[Code]

procedure InitializeWizard;
var
Memo: TNewMemo;
Form: TSetupForm;
begin
Form := CreateCustomForm;
try
Form.Position := poScreenCenter;
Memo := TNewMemo.Create(Form);
Memo.Parent := Form;
Memo.Align := alClient;
#sub AddFileItemCode
#emit ' Memo.Lines.Add(''' + FileList[FileIndex] + ''');'
#endsub
#for {FileIndex = 0; FileIndex < FileCount; FileIndex++} AddFileItemCode
Form.ShowModal;
finally
Form.Free;
end;
end;

#expr SaveToFile("c:\PreprocessedScript.iss")

关于inno-setup - 使用新行显示 Inno 安装程序中文件中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18743519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com