Проверка диапазона портов для ввода данных в Inno Setup - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь установить конкретный диапазон значений, которые принимаются из пользовательских вводимых данных в процессе установки.Например, поле порта просто принимает диапазон от 10000-20000.

Я пытаюсь использовать это условие в NextButtonClick или даже в другом.Я искал в документации по Паскалю, но не нашел, как это сделать, иначе здесь не задавался вопрос о том, как установить проверку данных для определенного диапазона.

Мой код, как показано ниже:

[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;

1 Ответ

0 голосов
/ 24 декабря 2018

Просто подтвердите ввод, отобразите сообщение об ошибке и убедитесь, что функция события NextButtonClick возвращает 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;

enter image description here

...