Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Aufzählungstypen in IDL, TOleEnum

  Alt 3. Jul 2024, 17:13
AUFPASSEN, die $00000001 sind BitMasken, keine BitIndize.

Die Nächsten sind doch ganz bestimmt $00000002, $00000004, $00000008 und $00000010,
anstatt $00000002, $00000003, $00000004 und $00000005.

In C können hier auch mehrere Bits pro Wert/Name gesetzt sein, z.B. $00100010.


Und nach Möglichkeit besser niemals den Namen einen Wert zuweisen.
Wenn es fortlaufen ist, dann einfach nur
Delphi-Quellcode:
   type
      tagcharactTypeET =
      (
         chBlaEC,
         chBlubEC,
         ...
      );
Sonst fehlt in der RTTI die Namensliste und man bekommt bei Nutzung der TypeInfo/RTTI Probleme, z.B. wenn man Speicherwert in Namen konvertieren lassen will.

Außerdem sind ENUMs in Delphi möglichst Klein, also bei weniger als 256 Werten, ist der ENUM bloß 1 Byte groß, obwohl der Typ als DWORD (TOleEnum = Cardinal) deklariert ist, also in C standardmäßig 4 Byte.

Bezüglich ENUMs kann man hier mit {$MinEnumSize 4} arbeiten,
aber bei SETs, weigert sich Borland/Embarcadero seit Jahren dort auch sowas einzuführen.
$2B or not $2B
  Mit Zitat antworten Zitat