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; -- _______________________________________________ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus