考慮以下德爾福帕斯卡代碼:DELPHI:如何在循環或大小寫之外使用「break」?
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,但是這不是我的問題。我想知道是否有辦法擺脫單迭代repeat-until語句。沒有它,我不能在處理塊的任何地方使用break語句,我需要在任何時候停止處理。
事實上,你可以做的事情可能是「多態的東西」這兩種組件類型都是從'TCustomEdit'下降的。改變'tc'的聲明。 – 2009-07-29 16:19:50
+1。雖然您發佈的代碼非常殘酷,但您如何改進它卻是正確的。每當你有一個永遠不會執行超過一次的循環時,你就會犯錯。 – 2009-07-29 16:24:05