(Co-Admin)
Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
Delphi 11 Alexandria
|
8. Jun 2002, 18:00
Moin Ernie,
ich mag mich irren, aber Variante Records stellen weniger das Problem dar, als die Verwendung von Strings, auch wenn es, wie in diesem Falle, Shortstring sind.
Der Typ Variant und Variante Records haben eigentlich nichts miteinander zu tun, mal abgesehen von der Namensähnlichkeit.
Drei Ideen hätte ich allerdings noch, wie Du das Problem lösen kannst:
1. Verzichte auf den Varianten Teil des Records, und nehme einfach einen, mit Flagfeld und Datenfeld. Über das Flagfeld kannst Du dann, ohne Strings benutzen zu müssen, entscheiden, ob ein Not Defined vorliegt, oder ob Du etwas mit dem Wert im Datenfeld anfangen kannst.
2. Wenn machbar, lasse einfach einen Wert nicht als gültig zu. Am sinnvollsten wohl den obersten oder untersten Wert im Wertebereich. Ist das Ergebnis not Defined wird dann dieser Wert zugewiesen. Das wäre dann so ähnlich wie INVALID_HANDLE_VALUE = $FFFFFFFF = 4294967295 (= -1 mit Vorzeichen betrachtet) bei DWords.
In diesem Falle sparst Du Dir komplett einen Record, da ja der unmittelbare Wert die Gültigkeit angibt.
3. Benutze zwei parallel Laufende arrays eines mit den Flags, und eines mit den Werten.
Wenn möglich sollten die Arrays statisch sein, oder wenn dynamisch erforderlich ist, dann sollten sie nur äusserst selten vergrössert, also von der Grösse her möglichst passend initialisiert werden.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
|