DELPHI: how to use "break" outside of loop or case?
break, delphi, pascal, syntax
Solution
Pack it into a function and use exit to jump back. if there is more code to follow the repeat statement, use a local function/procedure, something like:
procedure ...
procedure testsomething(tc: TComponent);
begin
if(tc is TDBEdit)then begin
if(check_something_about_edit(tc))then exit;
do_something_else_edit(tc);
exit;
end else if(tc is TBMemo) then begin
if(check_something_about_memo(tc))then exit;
do_something_else_memo(tc);
exit;
end;
raise exception.create('invalid component type');
end;
var
tc: TComponent;
begin
{ do something to get tc }
try
TestSomething(tc);
{ do something more }
except
...
end;
end;
Problem
consider the following delphi pascal code: ``` 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 } ``` I know there's probably some polymorphic stuff that I could do with TComponent, but that's not my question. I'm wondering if there's a way to get rid of the single iteration repeat-until statement. Without it, I can't use the break statement anywhere in the processing block, and I need that to stop processing at any time.