在 Inno Setup [代码] 部分将宏扩展为 Pascal 代码

Expanding macros to Pascal Code in Inno Setup [Code] section

我试图制作一个宏来避免重复代码和注释。

我试过这个:

#define GrowOnPage(any Page, any Component) Component.Width := Page.SurfaceWidth; Component.Anchors := [akLeft, akRight, akTop];

但是,找不到宏。我只是尝试像普通函数/过程一样调用它:

GrowOnPage(configPage, configTextField);

也许我完全误解了这里的宏。但是文档没有任何示例。

我没有为此制定程序的原因是 Anchors 属性 在组件的共同父 class 中不可用,例如 TCustomEdit.

解决这个问题的正确方法是什么?

要计算预处理器函数,您必须使用预处理器指令。最常用的方法是使用 #emit directive.

不过请注意,Inno Setup 预处理器 函数 与 C macros 不同。它们实际上是 函数 。因此,如果您想使用它们来生成脚本的一部分,则它们必须评估为一个字符串。像这样:

#define GrowOnPage(str Page, str Component) \
    Component + ".Width := " + Page + ".SurfaceWidth; " + \
    Component + ".Anchors := [akLeft, akRight, akTop];"

并像这样使用它:

#emit GrowOnPage("configPage", "configTextField")