unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
TTestEnum = (te0, te1, te2, te3, te4, te5, te6, te7, te8, te9, te10, te11, te12, te13, te14, te15,
te16, te17, te18, te19, te20, te21, te22, te23, te24, te25, te26, te27, te28, te29, te30, te31);
TTestSet = set of TTestEnum;
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
procedure SwitchSet(var ASet; const AItem; AOn: Boolean);
var
Form1: TForm1;
implementation
procedure SwitchSet(var ASet; const AItem; AOn: Boolean);
type
TDummyEnum =
(de0, de1, de2, de3, de4, de5, de6, de7, de8, de9, de10, de11, de12, de13, de14, de15,
de16, de17, de18, de19, de20, de21, de22, de23, de24, de25, de26, de27, de28, de29, de30, de31);
TDummySet = set of TDummyEnum;
begin
if AOn
then include(TDummySet(ASet), TDummyEnum(AItem))
else exclude(TDummySet(ASet), TDummyEnum(AItem));
end;
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var aEnum: TTestEnum;
aSet: TTestSet;
begin
aSet:=[];
for aEnum:=low(TTestEnum) to high(TTestEnum) do
begin
SwitchSet(aSet, aEnum, True);
writeln('IsThere T: ', ord(aEnum), ' ', boolToStr(aEnum in aSet, 'T', 'F'));
SwitchSet(aSet, aEnum, False);
writeln('IsThere F: ', ord(aEnum), ' ', boolToStr(aEnum in aSet, 'T', 'F'));
end;
end;
end.