Pascal和Delphi语法错误?

Pascal和Delphi语法错误?,delphi,inno-setup,pascal,Delphi,Inno Setup,Pascal,这是inno安装程序的代码部分。我的目的是在一次选中一个复选框的地方设置两个复选框。 但此代码返回错误 [代码]部分: procedure CheckBoxOnClick(Sender: TObject); var Box2,CheckBox: TNewCheckBox; begin if CheckBox.Checked then CheckBox.State := cbUnchecked; Box2.State := cbChecked; else

这是inno安装程序的代码部分。我的目的是在一次选中一个复选框的地方设置两个复选框。 但此代码返回错误

[代码]部分:

procedure CheckBoxOnClick(Sender: TObject);
var
Box2,CheckBox: TNewCheckBox;
begin
if CheckBox.Checked then
   CheckBox.State := cbUnchecked;
   Box2.State := cbChecked;
else                                //THIS LINE RETURNS AN ERROR: "Identifier Expected."
   CheckBox.State := cbChecked;
   Box2.State := cbUnchecked;
end;

procedure Box2OnClick(Sender: TObject);
var
Box2,CheckBox: TNewCheckBox;
begin
if Box2.Checked then
   CheckBox.State := cbChecked;
   Box2.State := cbUnchecked;
else                               //same error
   CheckBox.State := cbUnchecked;
   Box2.State := cbChecked;
end;

procedure CreateTheWizardPages;
var
  Page: TWizardPage;
  Box2,CheckBox: TNewCheckBox;
begin
  { TButton and others }

  Page := CreateCustomPage(wpWelcome, '', '');

  CheckBox := TNewCheckBox.Create(Page);
  CheckBox.Top :=ScaleY(8)+ScaleX(50);
  CheckBox.Width := Page.SurfaceWidth;
  CheckBox.Height := ScaleY(17);
  CheckBox.Caption := 'Do this';
  CheckBox.Checked := True;
  CheckBox.OnClick := @CheckBoxOnClick;
  CheckBox.Parent := Page.Surface;

  Box2 := TNewCheckBox.Create(Page);
  Box2.Top :=ScaleY(8)+ScaleX(70);
  Box2.Width := Page.SurfaceWidth;
  Box2.Height := ScaleY(17);
  Box2.Caption := 'No,Thanks.';
  Box2.Checked := False;
  Box2.OnClick := @Box2OnClick;
  Box2.Parent := Page.Surface;
end;


procedure InitializeWizard();
//var
begin
  { Custom wizard pages }
  CreateTheWizardPages;
end;

请告诉我在
之后在Pascal中更改..

的位置,然后
否则
必须跟随一条语句或一个块

以下是解析器解释代码的方式:

  • 如果条件为true,则行
    CheckBox.State:=cbUnchecked将被执行。通过该语句,
    if
    子句完成
  • 然后
    Box2.State:=cbChecked将始终执行
  • else
    不属于任何当前打开的
    if
    语句->语法错误
  • 必须将代码包含在块中,如下所示:

    procedure CheckBoxOnClick(Sender: TObject);
    var
      Box2,CheckBox: TNewCheckBox;
    begin
      if CheckBox.Checked then
      BEGIN
         CheckBox.State := cbUnchecked;
         Box2.State := cbChecked;
      END else                               
      BEGIN
         CheckBox.State := cbChecked;
         Box2.State := cbUnchecked;
      END;
    end;
    

    很简单。添加一个
    开始。。。在您的
    之后结束
    子句,然后

    
    if CheckBox.Checked then
    BEGIN
       CheckBox.State := cbUnchecked;
       Box2.State := cbChecked;
    END
    else