![]() |
Delphi-Version: 2007
Aufzählungstypen quasi kombinieren
Ich hab öfter folgende Situation, zum Beispiel so:
Delphi-Quellcode:
Im Beispiel steten Eins, Zwei und Drei je für das Selbe.
TSomeTyp = (stEins, stZwei, stDrei, stVier, stFuenf);
TSomeStyle = (ssEins, ssZwei, ssDrei, ssSechs, ssSieben, ssAcht, ssNeun); Gibt es eine Chance den zweiten Aufzählungstyp irgendwie so aufzubauen
Delphi-Quellcode:
also irgendwie wohl mit integer aber dennoch sprechende Bezeichner? :gruebel:
"TSomeStyle" = "TSomeTyp" - "[stVier, stFuenf]" + "[ssSechs, ssSieben, ssAcht, ssNeun]";
|
AW: Aufzählungstypen quasi kombinieren
Nein!
Binär ist stEins = ssEins. Wie sollte da der Compiler/Lauffähige Programm das später unterscheiden können. Wieso willst du kombinieren? AFAIK könnt es gehen wenn du einen gemeinsamen Typ definierst und später darauf eingeschränkte Typen ableitet. |
AW: Aufzählungstypen quasi kombinieren
Zitat:
Delphi-Quellcode:
nicht mehr zur Verfügung.
ssEins, ssZwei, ssDrei
Hast du die Typen selber definiert? Oder sind die aus einer Komponente, die du als Vorgabe hinnehmen must? Wenn dir der Präfix egal ist und für alle gleich sein kann, dann kannst du auch mit Sets arbeiten.
Delphi-Quellcode:
type
TSomeTyp = (stEins, stZwei, stDrei, stVier, stFuenf, stSechs, stSieben, stAcht, stNeun); TSomeTypSet = Set of TSomeTyp; const TSomeSubset1 = [stEins, stZwei, stDrei, stVier, stFuenf]; TSomeSubset2 = [stEins, stZwei, stDrei, stSechs, stSieben, stAcht, stNeun]; Dann kannst du mit folgendem prüfen
Delphi-Quellcode:
Nicht ganz deine gewünschte Lösung. Aber vielleicht ein Ansatz.
if SomeType in TSomeSubset1 then
|
AW: Aufzählungstypen quasi kombinieren
Keine Ahnung, ob das hier was bringt, aber der Vollständigkeit halber:
Delphi-Quellcode:
type
TSomeBase = (ssEins, ssZwei, ssDrei, ssVier, ssFuenf, ssSechs, ssSieben, ssAcht, ssNeun); TSomeSet = set of TSomeBase; TSomeFirst = ssEins..ssDrei; TSomeMiddle = ssVier..ssFuenf; TSomeLast = ssSechs..ssNeun; TSomeTyp = ssEins..ssFuenf; const TSomeStyle: TSomeSet = [ssFirst..ssDrei, ssSechs..ssNeun]; |
AW: Aufzählungstypen quasi kombinieren
Ja, sind eigene Typen (und Präfixe). Das const kann ich hier nicht gebrauchen (brauche z.B. FSomeMenuItems: array [0..cMaxCount - 1, TSomeTyp] of TMenuItem) aber das bringt mich schon mal weiter, vielen Dank Gerd und Uwe (auch für den link zum Pascal Analyzer). Meine Frage zielte auch darauf ab, was macht man wenn es mehr als 256 Elemente gibt?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz