【发布时间】:2009-07-29 15:53:58
【问题描述】:
考虑下面的 delphi pascal 代码:
var
tc: TComponent
begin
{ do something to get tc }
repeat
if(tc is TDBEdit)then begin
if(check_something_about_edit(tc))then break;
do_something_else_edit(tc);
break;
end else if(tc is TBMemo) then begin
if(check_something_about_memo(tc))then break;
do_something_else_memo(tc);
break;
end;
raise exception.create('invalid component type');
until(true); {single iteration look required to use break }
我知道我可以用 TComponent 做一些多态的东西,但这不是我的问题。我想知道是否有办法摆脱单次迭代重复直到语句。没有它,我无法在处理块的任何地方使用 break 语句,我需要它随时停止处理。
【问题讨论】:
-
确实,你可以做一些“多态的东西”;这两种组件类型都来自
TCustomEdit。将tc的声明更改为那个。 -
+1。尽管您发布的代码很糟糕,但您问如何改进它是正确的。每当您有一个永远不会执行多次的循环时,您就做错了。
标签: delphi syntax pascal break