创新设置 | Pascal:读出SelectedValueIndex,改变一个变量值

Inno Setup | Pascal: read out SelectedValueIndex, which changes a variable value

经过两天的尝试,我终于决定在 Whosebug 上提出我的第一个问题。

我有一些 C# 编程经验,但无法处理 Pascal 中的简单任务。 正如标题所说,我只是想读出当前选择的单选按钮,它应该改变另一个变量的名称。

该变量决定文件在我的电脑上的解压位置。

注意:我已经能够读出我的 'VersionNumber' 变量,但是它不包含我选择的元素!

[Code]
var 
  Page1: TInputOptionWizardPage;
  SetupString21:string;
  SetupString22:string;
  SetupBool21:Boolean;
  SetupBool22:Boolean;
  VersionNumber:string;

procedure InitializeWizard;
begin
  SetupString21 := '2021'
  SetupString22 := '2022'
  VersionNumber := SetupString21

  Page1:= CreateInputOptionPage(1, 'Select a version', 'Help text', 'Second help text', True, False);

  //add items
  Page1.Add(SetupString21);
  Page1.Add(SetupString22);

  //set initial values (optional)
  Page1.Values[0] := True;

  //read values into variables
  SetupBool21 := Page1.Values[0]
  SetupBool22 := Page1.Values[1]

  if WizardForm.TypesCombo.SelectedValueIndex = SetupString22 then VersionNumber := SetupString22;
end;

function GetParams(Value: string): string;
begin  
  Result := VersionNumber;
end;

你没有给我们任何背景信息。尽管从 GetParams 函数的签名和名称来看,我会猜测它是 [Run] 部分的脚本常量的实现。

那么你可能想要这个:

var
  SetupIndex21: Integer; // will be 0
  SetupIndex22: Integer; // will be 1

procedure InitializeWizard;
begin
  // ...
  SetupIndex21 := Page1.Add(SetupString21);
  SetupIndex22 := Page1.Add(SetupString22);

  // set initial value
  Page1.SelectedValueIndex := SetupIndex21;

  // ...
end;

function GetParams(Value: string): string;
begin  
  if Page1.SelectedValueIndex = SetupIndex21 then Result := SetupString21
    else
  if Page1.SelectedValueIndex = SetupIndex22 then Result := SetupString22;
end;