【问题标题】:Emit new line in Inno Setup preprocessor在 Inno Setup 预处理器中发出新行
【发布时间】:2018-02-10 11:05:21
【问题描述】:

当使用Inno Setup preprocessor 生成多行输出时,例如在我的这些答案中:

我总是必须使用#pragma parseroption directive 切换到C 风格的字符串文字,因为使用C 风格的字符串文字,我可以使用\n

#pragma parseroption -p-

#define TwoLines "line1\nline2\n"

#pragma parseroption -p+

我还没有找到任何方法在默认的 Pascal 样式字符串文字中发出换行符。

在真正的 Pascal(脚本)字符串中,可以使用 #13#10。但这在预处理器中不起作用。两者都没有相当于 Pascal Chr function

还有其他方法可以在 Pascal 风格的字符串文字中发出新行吗?

【问题讨论】:

  • 你的意思是像这样的 const 字符串文字:const myString = 'this is a long string that extends' + 'to a second line';?
  • @DeadTrousers 不,预处理器文字。喜欢#define FileEntry(Source) "Source: " + Source + "; DestDir: {app}\n"。在链接的问题中查看更多示例。

标签: inno-setup


【解决方案1】:

Inno Setup 6 中有 NewLine macro


如果您使用的是旧版本的 Inno Setup,您可以在自己的脚本中定义宏。定义为:

#pragma parseroption -p-
#define NewLine "\n"
#pragma parseroption -p+

【讨论】:

    【解决方案2】:

    我看了一下 Inno Setup Preprocessor 的源代码:

    https://github.com/jrsoftware/issrc/tree/master/Projects/ISPP

    我认为除了你的方法之外别无他法。预处理器主要基于 C 标记器,parseroption -p 基本上只是启用/禁用对转义序列的支持。但是没有解析像#13#10这样的Pascal字符文字的实现。

    【讨论】:

    • 我在查看代码时得出了相同的结论。但是我简直不敢相信默认的字符串类型有这样的限制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 2018-12-17
    • 1970-01-01
    相关资源
    最近更新 更多