Twincat 3 Enums strukturierbar machen?

Jochen

Level-1
Beiträge
131
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
[Gelöst] Twincat 3 Enums strukturierbar machen?

Hallo,

ich möchte gerne in meinem Twincat3-Projekt (bin neu bei Beckhoff) an verschiedenen Stellen Enums verwenden. Nun gibt es in der Applikation Stellen, an denen man das Enum (gleicher Name) nochmal verwenden möchte, allerdings einem anderen Bereich zugeordnet und nicht zwangsweise mit dem gleichen Wert, weil der Bezeichner vielleicht an einer anderen Stelle der neuen Enumeration steht. Daher wäre es schön, ein Enum strukturieren zu können.

Bisher löst der Kunde das über Structs, die das Namenspräfix "ENUM" tragen. Das führt natürlich dazu, dass diese "Enums" keine echten Enums sind, sondern diese nur simulieren. Ich kann so bspw. keine Case-Anweisungen mit nicht-konstanten INTs programmieren.

Jetzt könnte man echte Enums verwenden und das Problem der Namensgleichheit umgehen, indem man den Bezeichnern ein Präfix voranstellt. Dies möchte der Kunde nicht.

Gibt es noch andere Möglichkeiten, ein Enum zu strukturieren?

Danke im Voraus

Gruß

Jochen
 
Zuletzt bearbeitet:
Jetzt könnte man echte Enums verwenden und das Problem der Namensgleichheit umgehen, indem man den Bezeichnern ein Präfix voranstellt. Dies möchte der Kunde nicht.

Der Kunde meint also es könnte STATUS_ENUM[Idx] geben. Soll er weiter träumen. Man kann nur das programmieren, was das System hergibt.

Code:
[FONT=courier new]CASE Kundenwahlmöglichkeit OF[/FONT]

[FONT=courier new]   SimuENUM: [/FONT]

[FONT=courier new]   PräfixENUM: [/FONT]

[FONT=courier new]ELSE[/FONT] 
[FONT=courier new]   (* Falsche Auswahl! *)[/FONT]
[FONT=courier new]END_CASE[/FONT]

;-)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, indem du die Enums voll qualifiziert nutzt. Dafür musst Du oben im Enum ein Pragma setzen (such mal nach qualified) oder nutzt es ohne das Pragma von vornherein voll qualifiziert geht meine ich auch, dann hast Du deine Unterscheidung.

Nachtrag : Hab es gerade mal getestet, es geht auch ohne Pragma. Du nimmst einfach den Namen der Enum-Gruppe, dann einen Punkt und dann das gewünschte Enum.

Von irgendwas mit Internetzugang gesendet.
 
Zuletzt bearbeitet:
Ja, indem du die Enums voll qualifiziert nutzt. Dafür musst Du oben im Enum ein Pragma setzen (such mal nach qualified) oder nutzt es ohne das Pragma von vornherein voll qualifiziert geht meine ich auch, dann hast Du deine Unterscheidung.

Dankeschön. Ich bin gerade heute morgen auf diese Pragma-Anweisung gestoßen und habe sie schon so umgesetzt.

Nachtrag : Hab es gerade mal getestet, es geht auch ohne Pragma. Du nimmst einfach den Namen der Enum-Gruppe, dann einen Punkt und dann das gewünschte Enum.

Dann meckert bei mir der Compiler aber über doppelt vergebene Enums, daher mache ich es voll qaualifiziert.

Gruß

Jochen
 
Wenn du mehrere Enums mit gleichen Namen hast dann können sie ja nun auch nur über den Namespace unterschieben werden - ist in keiner Programmiersprache anders ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei gleichen Enums musst Du, wie Larry schon schrieb, das Enum immer voll qualifiziert angeben. Das Pragma ist eher eine erzieherische Maßnahme dies auch wenn es nicht nötig wäre machen zu müssen.

Gruß

Oliver

Von irgendwas mit Internetzugang gesendet.
 
Zurück
Oben