Terry Kemp schreef:
Hi All

how do you do a case statement on a record of booleans e.g...

Type
 EngModeRec = Record
  ManualOp: Boolean;
  LeakTest: Boolean;
  DrainFlush: Boolean;
 end;

var
 EngMode: EngModeRec;

I want to have...

Case True of EngMode.ManualOp: ManualOpRun;
  EngMode.LeakTest: LeakTestRun;
  EngMode.DrainFlush: DrainFlushRun;
end;
but of course this wont work :(



You cannot use it like that. You would have to use an nested if then statement like:

if EngMode.ManualOp then ManualRun
else if EngMode.ManualOp then LeakTest
else etc.


I would use an enum:

type
  TEngMode = (emManualOp, emLeakTest, emDrainFlush);

var
  EngMode : TEngMode;

case EngMode of
  emManualOp: ManualRun;
  emLeakTest: LeakTestRun;
  emDrainFlush: DrainFlushTest;
end;

if several EngMode can occur at the same time (like can happen with EngModeRec) you can use

type
  TEngModeSet = set of TEngMode;

But then you cannot use case anymore to do the tests.

HTH,
Vincent
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to