Enums und Konstanten haben beide ihre Tücken.
Ein case auf einem Enum, der
alle States berücksichtigen muss sollte immer so aufgebaut sein
Delphi-Quellcode:
TMyEnum = (a,b,c);
case MyEnum of
TMyEnum.a : ;
TMyEnum.b : ;
TMyEnum.c : ;
else
raise ENotImplemented.Create(Ord(MyEnum));
end;
sonst hat man ein Problem, wenn der Enum-Type erweitert wird.
Bei der Verwendung von Konstanten habe ich dabei das Problem, dass bei einer Erweiterung die Werte doppelt vergeben kann (was wiederum falsch sein könnte).
Delphi-Quellcode:
TMyEnum = record
const
a = 0;
b = 1;
c = 2;
d = 1; // Das ist leider falsch
end;
Sowohl das eine als auch das andere Szenario kann sich fatal auswirken.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)