Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.088 Beiträge
 
Delphi 12 Athens
 
#2

AW: TMsgDlgButtons erweitern?

  Alt 30. Jan 2023, 15:21
Leider ist es nicht möglich Enums oder Sets zu vererben.

Per se ist dieser Enum 1 Byte groß, also kann er auch 256 Werte speichern,
aber da das Set 2 Byte groß ist, sind es eigentlich nur 16 mögliche Werte (0..15).
Und da aktuell nur 0..11 belegt sind, gibt es noch "freie" Werte.

So lange also Platz vorhanden ist, kann man sich selber für die vorhandenen Werte eine Konstante (Alias) deklarieren.

const mbEdit = TMsgDlgBtn(15);
oder z.B.
const mbEdit = Succ(High(TMsgDlgBtn));



Blöd ist nur, wenn zukünftig im Delphi neue Werte dazu kommen und dann nichts mehr frei ist.

* Bei der "festen" 15 kann es dann Probleme geben, wenn es dort plötzlich schon einen "verwendeten" Wert gibt.

* Das High/Succ wird hoffentlich bei der Verwendung knallen, wenn man es einem SET zuweisen will. (Out of Range)
Ich würde hier bereits ein {$IF} mit einem {$Message Error} bei der Deklaration vorsehen, welches den Wertebereich prüft. Und im zukünftigen Delphi dann direkt an der richtigen Stelle knallt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (30. Jan 2023 um 15:52 Uhr)
  Mit Zitat antworten Zitat