On 08/22/2010 10:10 AM, 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'?

--
You should use Else. But if you insist on break, you can insert a dummy repeat/until loop:

Result:=false;
mylist:=TStringlist.Create;
repeat
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;
until true
mylist.free;

--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to