[Lazarus] Break in 'case...of' block.
Michael Van Canneyt
michael at freepascal.org
Sun Aug 22 11:36:28 CEST 2010
On Sun, 22 Aug 2010, Dave Coventry wrote:
> I have a function that tests for a series of different conditions
> according to a value in a 'case...of' block.
>
> Result:=false;
> mylist:=TStringlist.Create;
> case i of
> 1:
> begin
> if condition1 then
> begin
> Result:=true;
> break;
> end;
> if condition2 then
> begin
> Result:=true;
> break;
> end;
> if condition3 then
> begin
> Result:=true;
> end;
> end;
> 2:....;
> 3:....;
> end;
> mylist.free;
>
> The above does not work as the 'case...of' is not considered to be a loop.
> Error: BREAK not allowed.
>
> I could just exit the function, using 'exit' instead of 'break' but I
> think I need to free the mylist TStrings.
>
> Is there a way of doing this or is my best way just to replace 'break'
> with 'mylist.free' and 'exit'?
If you use a try/finally block (and you always should when allocating resources)
then an exit will go through the finally block. So you can simply use exit.
mylist:=TStringlist.Create;
try
Case i of
// Use exit
end;
finally
MyList.Free;
end;
More information about the Lazarus
mailing list