Inno Setup 中数据输入的端口范围验证
Port range validation for data input in Inno Setup
我尝试设置从安装中的用户输入接受的特定值范围。例如,端口字段只接受 10000-20000 的范围。
我尝试在NextButtonClick
甚至其他地方使用这个条件。我在 Pascal 文档中进行了搜索,但我没有找到如何执行此操作,否则在此之前没有问题要为特定范围设置数据验证。
我的代码如下:
[Code]
var
AdminDataPage: TInputQueryWizardPage;
Name, SuperPassword, ServerName, ServerPort : String;
function CreateAdminDataPage(): Integer;
begin
AdminDataPage := CreateInputQueryPage(wpSelectDir, 'Required Information', '', '');
AdminDataPage.Add('Name', False);
AdminDataPage.Add('SuperPassword', True);
AdminDataPage.Add('ServerName', False);
AdminDataPage.Add('ServerPort', False);
end;
procedure CreateAdminDataPage();
begin
CreateDataInputPage();
end;
function NextButtonClick(CurPageID: Integer): Boolean;
begin
if CurPageID = AdminDataPage.ID then
begin
Name := AdminDataPage.values[0];
SuperPassword := AdminDataPage.values[1];
ServerName := AdminDataPage.values[2];
ServerPort := AdminDataPage.values[3];
end;
end;
只需验证输入,显示错误消息并确保 NextButtonClick
事件函数 returns False
:
function NextButtonClick(CurPageID: Integer): Boolean;
var
ServerPortInt: Integer;
begin
Result := True;
if CurPageID = AdminDataPage.ID then
begin
ServerPort := AdminDataPage.Values[3];
ServerPortInt := StrToIntDef(ServerPort, -1);
if (ServerPortInt < 10000) or (ServerPortInt > 20000) then
begin
MsgBox('Please enter port in range 10000-20000.', mbError, MB_OK);
WizardForm.ActiveControl := AdminDataPage.Edits[3];
Result := False;
end;
end;
end;
我尝试设置从安装中的用户输入接受的特定值范围。例如,端口字段只接受 10000-20000 的范围。
我尝试在NextButtonClick
甚至其他地方使用这个条件。我在 Pascal 文档中进行了搜索,但我没有找到如何执行此操作,否则在此之前没有问题要为特定范围设置数据验证。
我的代码如下:
[Code]
var
AdminDataPage: TInputQueryWizardPage;
Name, SuperPassword, ServerName, ServerPort : String;
function CreateAdminDataPage(): Integer;
begin
AdminDataPage := CreateInputQueryPage(wpSelectDir, 'Required Information', '', '');
AdminDataPage.Add('Name', False);
AdminDataPage.Add('SuperPassword', True);
AdminDataPage.Add('ServerName', False);
AdminDataPage.Add('ServerPort', False);
end;
procedure CreateAdminDataPage();
begin
CreateDataInputPage();
end;
function NextButtonClick(CurPageID: Integer): Boolean;
begin
if CurPageID = AdminDataPage.ID then
begin
Name := AdminDataPage.values[0];
SuperPassword := AdminDataPage.values[1];
ServerName := AdminDataPage.values[2];
ServerPort := AdminDataPage.values[3];
end;
end;
只需验证输入,显示错误消息并确保 NextButtonClick
事件函数 returns False
:
function NextButtonClick(CurPageID: Integer): Boolean;
var
ServerPortInt: Integer;
begin
Result := True;
if CurPageID = AdminDataPage.ID then
begin
ServerPort := AdminDataPage.Values[3];
ServerPortInt := StrToIntDef(ServerPort, -1);
if (ServerPortInt < 10000) or (ServerPortInt > 20000) then
begin
MsgBox('Please enter port in range 10000-20000.', mbError, MB_OK);
WizardForm.ActiveControl := AdminDataPage.Edits[3];
Result := False;
end;
end;
end;