Hallo Steffen!
Ich fürchte, bei Dir fehlen die Grundlagen über Variante Records.
Wenn Du das hast:
Delphi-Quellcode:
case SearchOverAllFields : Boolean of // Suche über alle Felder?
True : (); // Keine Angabe von Suchfeldern, da Suche über alle Felder
False : (SearchFields : TSearchFields);
kannst Du
unabhängig vom Wert der Variablen "SearchOverAllFields" auf die Variable "Searchfields" zugreifen. In diesem Fall könnte noch helfen, daß Du den Typ anders definierst:
TSearchFields = (sfNone, sfTrackingID, sfSender, sfRecipient, sfSubject, sfMsgText);
und bei "SearchOverAllFields = True" dann "SearchFields:=sfNone" setzt.
Sonst bekommst Du beim Zugriff auf das Element den Wert, der da zufällig im
RAM rumlungert - dürfte selten passend sein und bei den Strings auch zu einer niedlichen kleinen
AV führen!
Die Varianten sind nur alternative Zugriffsverfahren auf
denselben Speicherbereich. Bei meinem Beispiel belegt die Variante 4 Byte, weil die größte Variable ein Integer (4 Bxyte) ist. Der Boolean ist identisch mit einem dieser 4 Bytes.
Bitte packe jetzt das Deutschsein (ich will, daß dsa klappt, also hat das auch zu klappen) weg - einen Gasherd kann man an einer Stromleitung nunmal nicht benutzen!
Es bliebe natürlich noch die Methode, statt der Varianten im Record zwei Recordtypen einzuführen und im Hauptrecord je eine Variable dieser Typen.
Gruß
Dietmar Brüggendiek