AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Aufzählungstypen quasi kombinieren

Ein Thema von Bjoerk · begonnen am 16. Aug 2015 · letzter Beitrag vom 16. Aug 2015
Antwort Antwort
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#1

Aufzählungstypen quasi kombinieren

  Alt 16. Aug 2015, 10:37
Delphi-Version: 2007
Ich hab öfter folgende Situation, zum Beispiel so:
Delphi-Quellcode:
TSomeTyp = (stEins, stZwei, stDrei, stVier, stFuenf);

TSomeStyle = (ssEins, ssZwei, ssDrei, ssSechs, ssSieben, ssAcht, ssNeun);
Im Beispiel steten Eins, Zwei und Drei je für das Selbe.

Gibt es eine Chance den zweiten Aufzählungstyp irgendwie so aufzubauen
"TSomeStyle" = "TSomeTyp" - "[stVier, stFuenf]" + "[ssSechs, ssSieben, ssAcht, ssNeun]"; also irgendwie wohl mit integer aber dennoch sprechende Bezeichner?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Aufzählungstypen quasi kombinieren

  Alt 16. Aug 2015, 10:47
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.294 Beiträge
 
Delphi 12 Athens
 
#3

AW: Aufzählungstypen quasi kombinieren

  Alt 16. Aug 2015, 14:03
Ich hab öfter folgende Situation, zum Beispiel so:
Delphi-Quellcode:
TSomeTyp = (stEins, stZwei, stDrei, stVier, stFuenf);

TSomeStyle = (ssEins, ssZwei, ssDrei, ssSechs, ssSieben, ssAcht, ssNeun);
Im Beispiel steten Eins, Zwei und Drei je für das Selbe.

Gibt es eine Chance den zweiten Aufzählungstyp irgendwie so aufzubauen
"TSomeStyle" = "TSomeTyp" - "[stVier, stFuenf]" + "[ssSechs, ssSieben, ssAcht, ssNeun]"; also irgendwie wohl mit integer aber dennoch sprechende Bezeichner?
Dann stehen die ja die Typen  ssEins, ssZwei, ssDrei nicht mehr zur Verfügung.

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

if SomeType in TSomeSubset1 then Nicht ganz deine gewünschte Lösung. Aber vielleicht ein Ansatz.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#4

AW: Aufzählungstypen quasi kombinieren

  Alt 16. Aug 2015, 15:20
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];
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Aufzählungstypen quasi kombinieren

  Alt 16. Aug 2015, 19:46
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?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz