Nur so eine Idee von mir:
Wenn nur die Werte 0 und 1 erlaubt sind, könnte man z.B. auch eine einzige Variable vom Typ Cardinal nehmen und dann nur die entsprechenden Bits setzen:
Delphi-Quellcode:
const
FLAGRESTART: Byte = 0;
FLAGPAUSE: Byte = 1;
FLAGSTOP: Byte = 2;
//usw., kann nach Bedarf fortgesetzt werden...
...
function GetFlag(flags: Cardinal; flagindex: Byte): Boolean;
begin
Result:= (flags and (1 shl flagindex))<>0;
end;
procedure SetFlag(var flags: Cardinal; flagindex: Byte; value: Boolean);
begin
if (GetFlag(flags, flagindex) and not(value)) then
flags:= flags -(1 shl flagindex)
else if (value and not(GetFlag(flags, flagindex))) then
flags:= flags + (1 shl flagindex);
end;
Ein Beispiel könnte dann so aussehen:
Delphi-Quellcode:
var myFlags: Cardinal;//<-- hier werden die Flags gespeichert
begin
myFlags:= 0;
SetFlag(myflag, FLAGRESTART, True);//FLAGRESTART auf 1 setzen
SetFlag(myflag, FLAGPAUSE, False);//FLAGPAUSE auf 0 setzen
//usw, je nach Bedarf
...
if GetFlag(myflag, FLAGRESTART) then ShowMessage('FLAGRESTART ist gesetzt')
else ShowMessage('FLAGRESTART nicht gesetzt');
end;
MfG
Binärbaum