Pascal和Delphi语法错误?

问题描述:

这是inno setup的代码部分。我的意图是在选择一个时刻创建两个复选框。 但是这段代码返回错误。Pascal和Delphi语法错误?

[代码]部分:

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; 

请告诉我在哪里兑换..

在帕斯卡尔thenelse一个单独的语句或块必须遵循。

这就是解析器如何解释你的代码:

  1. 如果条件为真,行CheckBox.State := cbUnchecked;将被执行。通过该声明,if条款已完成。
  2. 然后Box2.State := cbChecked;将始终执行。
  3. 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; 
+0

我的不好,谢谢。 – 2010-04-02 06:45:11

非常简单。在您的then之后添加begin ... end条款。


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