有关语法的问题(50分)

  • 主题发起人 主题发起人 yulin
  • 开始时间 开始时间
Y

yulin

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure Tmain.N9Click(Sender: TObject);
begin
zl_a:='';
zl.ShowModal;
if zl_a<>'' then
begin
dm.Table1.Filtered:=false;
dm.Table1.Filter:='业务经理='''+zl_a+'''';
dm.Table1.Filtered:=true;
end;

while true do
if not dm.Table1.Eof then
begin
qr5.print;
if messagebox(Handle,'继续打印下一页吗?','确定',MB_YESNO)=IDYES then dm.Table1.Next;
end
else
begin
messagebox(Handle,'无数据可继续打印','提示',MB_OK);
break;
end;
end;
end;

语法检查的提示:
'.'expected but ';' found

这是什么东西啊?我刚开始学Delphi实在是查不出哪不对啊?请指点谢谢!
 
当出现错误提示时,光标会停留在出现错误哪一行,只看哪行就行了,
应该看得出来了。如果看不出来,将哪一行贴出来大家看
 
少一个end;
 
多了最后第二个end
 
是多一个,可是为什么呢我实在不明白。
Pearl:能不能请你解说一下啊?
谢谢!
 
Pearl:
对不起啊!我点错了把分给了myname了
请到http://www.delphibbs.com/delphibbs/dispq.asp?lid=1101193 收分吧!
麻烦你了!
 
误得了你的分非常不好意思,请到
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1101219 拿回你的分

为了表示我的歉意,我可以替你解释一下原因

在if , while 等条件、循环语句后面只能执行一条指令,如:
if messagebox(Handle,'继续打印下一页吗?','确定',MB_YESNO)=IDYES then dm.Table1.Next;
中的 dm.Table1.Next;
如果要执行多条指令,就用begin与end框起来,一个begin必须对应一个end,如
if zl_a<>'' then
begin
dm.Table1.Filtered:=false;
dm.Table1.Filter:='业务经理='''+zl_a+'''';
dm.Table1.Filtered:=true;
end;

需要指出的是 if... else.. 只能算一个指令,所以
if not dm.Table1.Eof then
begin
qr5.print;
if messagebox(Handle,'继续打印下一页吗?','确定',MB_YESNO)=IDYES then dm.Table1.Next;
end
else
begin
messagebox(Handle,'无数据可继续打印','提示',MB_OK);
break;
end;
虽然看起来很庞大,但只是while true do 后面的一条指令(虽然它本身包括很多指令)

再看一个while true do 后面没有用begin(因为只有一条指令)
所以倒数第二个end是多余,因为没有begin与之对应。

明白了吗。
 
后退
顶部