Thema: Delphi Generics und Enums

Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Generics und Enums

  Alt 11. Sep 2015, 07:46
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)
  Mit Zitat antworten Zitat