Inno Setup限制按键上的某些特殊字符

时间:2018-09-21 13:09:50

标签: inno-setup pascalscript

我正在尝试限制输入框中某些特殊字符的按键,这是我的要求,并且我正在使用以下步骤进行操作。

procedure RestrictKeyPress(Sender: TObject; var Key: Char);
var
  KeyCode: Integer;
begin
  { Restrict special characters @, ^, *, \ }
  KeyCode := Ord(Key);
  if ((KeyCode = 32) or (KeyCode >= 64) or (KeyCode <= 94) or (KeyCode <= 42) or (KeyCode <= 92)) then
    Key := #0;
end;

我这样在InitializeWizard中调用此过程

PageConfig.Edits[1].OnKeyPress := @RestrictKeyPress;

但是,当我对此进行测试时,按键对于任何按键均无效。我试图仅限制下面提到的键和空间。

  

@,^,*,\

1 个答案:

答案 0 :(得分:3)

您的逻辑是完全错误的。 :-)让我们看一下:

if ((KeyCode = 32)          { Ok so far }
  or (KeyCode >= 64)        { Oops. Killing every key above 63 }
  or (KeyCode <= 94)        { And every key below 95 }
  or (KeyCode <= 42)        { And (redundantly) every key below 43 }
  or (KeyCode <= 92)) then  { And (redundantly) every key below 93 }

您也不需要将Key转换为数字。

使用简单的设置:

if (Key in ['@', '^', '*', '\', #32]) then  { #32 is space }
  Key := #0;