Einzelnen Beitrag anzeigen

lxo

Registriert seit: 30. Nov 2017
286 Beiträge
 
Delphi 12 Athens
 
#6

AW: Case-Anweisung - Zwingen alle Elemente des Typen auszuprogrammieren

  Alt Gestern, 13:18
Wie wäre es mit einem ganz anderen Ansatz?
Delphi-Quellcode:
type
  TEnum = (t1, t2, t3);

const
  EnumCheck: array[TEnum] of Boolean = (true, true, false);
Wenn jetzt TEnum um weitere Elemente erweitert wird, muss zwangsläufig auch die Konstante erweitert werden. Eine andere Möglichkeit wäre so etwas:
Delphi-Quellcode:
function EnumCheck(Value: TEnum): Boolean;
begin
  case Value of
    t1: Result := true;
    t2: Result := true;
    else
      raise EForgottenValue.Create('Hamwa nich was vergessen?');
  end;
end;
Das mit der Konstante mache ich auch schon.
Ich möchte aber gerne direkt beim case hängen bleiben.
Nur weil ich dann die Konstante erweitert habe, habe ich mein case ja nicht angepasst.
Wenn ich mehrere case-anweisungen habe die ich beachten muss, müsste ich ja so eine Zuweisung über jede case-Anweisung von dieser Enumeration machen.

Den zweiten Fall mache ich auch schon.
Das bekomme ich aber erst zur Laufzeit mit.
Hätte es halt gerne direkt beim kompilieren.
Unit-Test wäre das einzige was mir noch einfällt.
Hätte es aber wie gesagt gerne schon direkt beim kompilieren als Fehler, damit man direkt dahin geführt wird und das ausprogrammieren kann.
  Mit Zitat antworten Zitat