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

Inno setup 使用新行显示Inno安装程序中文件中的文本,inno-setup,Inno Setup,我正在尝试将从文件读取的一些文本嵌入Inno安装程序。理想情况下,这将发生在预处理器(ISPP)中,因此无法修改文本。我能够阅读文本,但无法显示任何新行: #define FileHandle #define FileLine #define ReadmeText "" #for {FileHandle = FileOpen("README.txt"); FileHandle && !FileEof(FileHandle); FileLine = FileRead(FileHa

我正在尝试将从文件读取的一些文本嵌入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脚本中使用它。

我认为这可以做到:

[设置]
AppName=我的程序
AppVersion=1.5
DefaultDirName={pf}\My程序
DefaultGroupName=我的程序
[守则]
程序初始化;
变量
备忘录:TNewMemo;
表格:TSetupForm;
开始
表单:=CreateCustomForm;
尝试
形式、位置:=位置中心;
备注:=TNewMemo.Create(表单);
备注。父项:=表格;
Memo.Align:=alClient;
#定义文件行
#定义文件句柄
#子进程文件行
#发出'Memo.Lines.Add('''+FileLine+'');'
#endsub
#对于{FileHandle=FileOpen(“Readme.txt”)\
FileHandle&!FileEof(FileHandle);FileLine=FileRead(FileHandle)}\
进程文件线
#如果文件句柄
#expr FileClose(文件句柄)
#恩迪夫
Form.showmodel;
最后
形式自由;
结束;
结束;
#expr SaveToFile(“c:\PreprocessedScript.iss”)
也可以通过这种方式创建和填充数组:

#定义filesource“Readme.txt”
#定义文件行
#定义文件索引
#定义文件计数
#定义文件句柄
#dim文件列表[65536]
#子进程文件行
#expr FileList[FileCount]=文件行
#expr FileCount=++FileCount
#endsub
#对于{FileHandle=FileOpen(filesource)\
FileHandle&!FileEof(FileHandle)\
FileLine=FileRead(FileHandle)}\
进程文件线
#如果文件句柄
#expr FileClose(文件句柄)
#恩迪夫
[设置]
AppName=我的程序
AppVersion=1.5
DefaultDirName={pf}\My程序
DefaultGroupName=我的程序
[守则]
程序初始化;
变量
备忘录:TNewMemo;
表格:TSetupForm;
开始
表单:=CreateCustomForm;
尝试
形式、位置:=位置中心;
备注:=TNewMemo.Create(表单);
备注。父项:=表格;
Memo.Align:=alClient;
#子AddFileItemCode
#发出'Memo.Lines.Add('''+FileList[FileIndex]+'');'
#endsub
#对于{FileIndex=0;FileIndex
非常感谢。这正是我需要的。我无法完全理解前置处理器阵列和将行添加到备注框之间的步骤。