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;
请告诉我在哪里兑换..
答
在帕斯卡尔then
后else
一个单独的语句或块必须遵循。
这就是解析器如何解释你的代码:
- 如果条件为真,行
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;
答
非常简单。在您的then
之后添加begin ... end
条款。
if CheckBox.Checked then
BEGIN
CheckBox.State := cbUnchecked;
Box2.State := cbChecked;
END
else
我的不好,谢谢。 – 2010-04-02 06:45:11