Inno Setup 使用多个验证表达式禁用下一步按钮(当输入值与多个值之一匹配时)

Inno Setup Disable Next button using multiple validation expressions (when input value matches one of multiple values)

我可以使用此代码...

procedure ValidatePage;
begin 
  WizardForm.NextButton.Enabled :=
    (CompareText(InputPage6.Values[EditIndex2], 'Admin') <> 0);
end;

procedure EditChange(Sender: TObject);
begin
  ValidatePage;
end;

procedure PageActivate(Sender: TWizardPage);
begin
  ValidatePage;
end;

但我想添加更多验证。

示例:如果您不允许 EX12345EX54321

WizardForm.NextButton.Enabled :=
  (CompareText(InputPage6.Values[EditIndex2], 'EX12345') <> 0);

WizardForm.NextButton.Enabled :=
  (CompareText(InputPage6.Values[EditIndex2], 'EX54321') <> 0);

如果我没理解错的话,你问的是如何将多个逻辑表达式组合成一个。使用 boolean operators,尤其是 and 运算符。

procedure ValidatePage;
begin 
  WizardForm.NextButton.Enabled :=
    (CompareText(InputPage6.Values[EditIndex2], 'EX12345') <> 0) and
    (CompareText(InputPage6.Values[EditIndex2], 'EX54321') <> 0);
end;

特别是如果您要添加更多选项,您可以通过先将值存储到局部变量来优化代码:

procedure ValidatePage;
var
  Value: string;
begin 
  Value := InputPage6.Values[EditIndex2];

  WizardForm.NextButton.Enabled :=
    (CompareText(Value, 'EX12345') <> 0) and
    (CompareText(Value, 'EX54321') <> 0);
end;