我正在尝试使用[ISPP]
部分来定义十六进制颜色,稍后将在[Code]
部分中将其用作专色,其值可能在将来发生变化,但我我在运行时遇到类型不匹配错误。以下是代码中的相关部分:
[ISPP]
#define ColorPetrol "$C8C264"
[Code]
procedure InitializeWizard();
var
PortLabel: TNewStaticText;
begin
PortLabel := TNewStaticText.Create(WizardForm);
PortLabel.Caption := 'Port';
PortLabel.Top := ScaleY(78);
PortLabel.Parent := Page.Surface;
PortLabel.Font.Color := ExpandConstant('{#ColorPetrol}');
end;
我假设错误是由定义常量为字符串而PortLabel.Font.Color
需要十六进制值引起的。如何在[ISPP]
部分中定义常量并以这种方式正确使用?
答案 0 :(得分:2)
只需使用PortLabel.Font.Color := {#ColorPetrol};
即可。 ExpandConstant()
用于扩展内置的Inno Setup常量,而不是用于ISPP定义。后者实际上只是文本替代。
作为旁注,我不知道[ISPP]
部分。 IMO你应该将定义移到[Code]
部分。