===》关于delphi中的“跳转"语句实现??困惑!《=====(100分)

  • 主题发起人 主题发起人 lanble
  • 开始时间 开始时间
L

lanble

Unregistered / Unconfirmed
GUEST, unregistred user!
请问各位大虾以下代码不知有何错误?,DELPHI 中的跳转语句是如何实现的!!
以下关于“DELPHI”跳转语句错误事例?
谢谢各位大虾救命!!
prcedure Tform1.but1click(sender: object);
begin
if edit1.text='' then
begin
goto ss;
end;
if edit2.text='' then
begin
goto yy;
end;
label ss;
begin
showmessage(' you are right');
end;
label yy;
begin
showmessage('you are wrong!');
end;
end;
 
Object PASCAL是纯结构化的语言,不支持GOTO语句。
prcedure Tform1.but1click(sender: object);
begin
if edit1.text='' then
showmessage(' you are right');

if edit2.text='' then
showmessage('you are wrong!');
end;
 
用跳转?自找烦恼。
用3h的方法吧
 
各位大虾,我只是举了事例罢了,但在DELPHI帮助里有一个"goto" 语句 它也有个事例,但不能运用!
这是为什么?
 
goto不是这样的
prcedure Tform1.but1click(sender: object);
label
ss,yy;
begin
if edit1.text='' then
begin
goto ss;
end;
if edit2.text='' then
begin
goto yy;
end;
ss;
begin
showmessage(' you are right');
end;
yy;
begin
showmessage('you are wrong!');
end;
end;
手头没有delphi 没试过
 
procedure TForm1.Button1Click(Sender: TObject);
var
NewString: string;
label StartHere;
begin
StartHere: Beep;
if InputQuery('Input Box', 'Prompt', NewString) then
goto StartHere;
end;
 
应按wrench的办法去做!?
 
wrench错了,应该是冒号!
prcedure Tform1.but1click(sender: object);
label
ss,yy;
begin
if edit1.text='' then
begin
goto ss;
end;
if edit2.text='' then
begin
goto yy;
end;
ss:
begin
showmessage(' you are right');
end;
yy:
begin
showmessage('you are wrong!');
end;
end;
 
...
ss:
showmessage(' you are right');
exit; //有这个就行了
yy:
showmessage('you are wrong!');
end;
 
下面的代码最简单,最标准,最完整,最正确 :
procedure TForm1.Button1Click(Sender: TObject);
label
ss,yy;
begin
if edit1.text='' then
goto ss;
if edit2.text='' then
goto yy;
ss :
begin
showmessage(' you are right');
Exit;
end;
yy :
showmessage('you are wrong!');
end;

end.
 
我们老师说最好不要用跳转语句,因为这语句没什么好处,已经处与快被取消的地步了。
从程序的性能的角度用goto 没什么好处,所以我认为少用为好
 
首先我想说的是goto 是一条比较好的的实现跳转的途径。
——如果你掌握的好的话。
你可以看一下Linux的源代码,有大量的goto。
goto的最大有点就是速度快。但在用的时候逻辑一定要准确。

你的Example可以用“卷起千堆雪tyn”的答案解决。没有问题。
 
wrench的方法是对的!首先声明,然后goto ss;//分号
下面是ss://冒号
 
label 是要先定义的!
 
千堆雪的代码我试过了,不管edit1.text=''是否为真,程序都显示“you are right”.
是说明不支持GOTO语句,还是上述例程有错呢?
 
更正一下,实际情况是这样的。如果两个条件都为真或都为假,那条“you are right”总会
显示;如果一个条件为真,另一个条件为假,才能达到分别执行的目的。
 
procedure TForm1.Button1Click(Sender: TObject);
label
ss,yy;
begin
if edit1.text<>'' then
goto ss;
if edit2.text='' then
goto yy;
ss :
begin
showmessage(' you are right');
// Exit;//这
end;
yy :
showmessage('you are wrong!');
end;

end.
 
后退
顶部