Die einzig saubere Lösung (wirklich sauber), ist die Implementierung von Blackjack (eventuell mit einer kleinen kosmetischen Korrektur):
Delphi-Quellcode:
function OrdMinElement(ASet: TAufzaehlungsMenge): Integer; // Liefert die Ordnungszahl
var
i: TAufzaehlungsTyp;
begin
Result := -1; // Falls die Menge leer ist
for i := Low(TAufzaehlungsTyp) to High(TAufzaehlungsTyp) do
if i in ASet then Begin
Result := i;
Exit;
end;
end;
Wie gesagt, kosmetisch. Und schneller ist es auch, denn es wird nach dem ersten Element gleich zurück gesprungen.
Konsequent müsste man, um diese Funktion optimal abzubilden, eine eigene SET-Klasse schreiben, hier kann man mit Bitmustern, Arrays oder sonstwas arbeiten und diese Sonderfunktionen implementieren.