Wenn der Set-Typ tatsächlich einen deklarierten Basistyp hat, dann geht das vielleicht auch einfacher:
Result := Ord(High(TSetElement)) - Ord(Low(TSetElement))
Bei der
CountOfElements-Funktion müsste man doch auch noch ein Set übergeben, daß alle Elemente des Basistyps enthält, oder? Bei einem leeren Set schlägt die if-Anweisung immer fehl.
Wenn es nur um das Zählen der im Set enthaltenen Elemente geht, geht das auch einfacher:
Delphi-Quellcode:
type
TSetElement = (liste von identifiern);
TElementSet = set of TSetElement;
function CountOfElements(const aSet: TElementSet ): integer;
var
I: TSetElement;
begin
Result := 0;
for I in aSet do
Inc(Result);
end;