LabVIEWForum.de
[gelöst]prüfen ob ein Variant ursprünglich das Cluster x war - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: [gelöst]prüfen ob ein Variant ursprünglich das Cluster x war (/Thread-geloest-pruefen-ob-ein-Variant-urspruenglich-das-Cluster-x-war)



[gelöst]prüfen ob ein Variant ursprünglich das Cluster x war - achim @ FZK - 13.07.2009 12:03

Wie kann ich prüfen ob ein Variant (ursprünglich ein Cluster), welchen ich aus der globalen Variablen ausgelesen habe vom gleichen Typ ist wie ein ein anderes Cluster?
Im speziellen hab ich ein benutzerdefiniertes Bedienelement (*.clt) und will wissen ob das was ich da ausgelesen hab eine Abbildung der gleichen Typs ist.
Die Variable welche ich auslesen ist auf jeden Fall eine strikte Typdefninition. Nur will ich prüfen ob es diese ist...

(schwer zu beschreiben, einfach mal Bildchen angucken dann sollte es klar sein...)

Viele Grüße,
Achim


[gelöst]prüfen ob ein Variant ursprünglich das Cluster x war - rasta - 13.07.2009 19:22

Hallo Achim,
schau mal hier:
http://www.LabVIEWforum.de/index.php?showtopic=11471

MacMarvin´s Post könnt für Dich das richtige sein.

Gruß
Ralf


[gelöst]prüfen ob ein Variant ursprünglich das Cluster x war - eg - 13.07.2009 19:43

Du kannst deine Variant Daten einfach mal versuchen in den gegebenen Datentyp umzuwandeln und falls du einen Fehler bekommst, dann war es wohl ein anderer Datentyp.


[gelöst]prüfen ob ein Variant ursprünglich das Cluster x war - Lucki - 14.07.2009 06:56

' schrieb:Du kannst deine Variant Daten einfach mal versuchen in den gegebenen Datentyp umzuwandeln...
Umsetzung:[attachment=19707]


[gelöst]prüfen ob ein Variant ursprünglich das Cluster x war - cb - 14.07.2009 07:45

noch ein Tip am Rande: falls man das in seinem Code öfter macht , und ggf. auch mit unterschiedlichen Datentypen die als Variant "verschickt" werden, dann ist es auf jeden Fall empfehlenswert den/die Cluster als Typedef abzuspeichern, sonst sucht man sich hinterher tot, wenn man einen Datentyp ändern muss ...


[gelöst]prüfen ob ein Variant ursprünglich das Cluster x war - achim @ FZK - 14.07.2009 10:49

' schrieb:noch ein Tip am Rande: falls man das in seinem Code öfter macht , und ggf. auch mit unterschiedlichen Datentypen die als Variant "verschickt" werden, dann ist es auf jeden Fall empfehlenswert den/die Cluster als Typedef abzuspeichern, sonst sucht man sich hinterher tot, wenn man einen Datentyp ändern muss ...
Das hab ich mir auch gedacht, darum hab ich mir alle Cluster als strict-Typ-def gespeichert. Mein Problem ist aber nun, wie ich vom VI-Pfad des *.clt wieder zu einem Cluster komme welches ich wie es Lucki vorschlägt konvertieren kann...


[gelöst]prüfen ob ein Variant ursprünglich das Cluster x war - schrotti - 14.07.2009 15:39

Auch hier könnten dir die Variantfunktionen von OpenG helfen. Siehe http://wiki.openg.org/Main_Page


[gelöst]prüfen ob ein Variant ursprünglich das Cluster x war - cb - 15.07.2009 07:00

' schrieb:Das hab ich mir auch gedacht, darum hab ich mir alle Cluster als strict-Typ-def gespeichert. Mein Problem ist aber nun, wie ich vom VI-Pfad des *.clt wieder zu einem Cluster komme welches ich wie es Lucki vorschlägt konvertieren kann...

ein strict typedef ist in dem Fall fehl am Platz, da es gegenüber einem "normalen" Typedef nur noch bewirkt dass alle Controls auf dem Frontpanel genau gleich aussehen. Das schadet zwar auch nicht, aber unter Umständen kann man sich damit Coercion Dots einfangen die man nicht mehr wegbekommt. Die sind dann zwar auch nicht "böse", aber nervig ist es troztdem und wenn man sich den z.B. in einer Schleife einfängt bedeutet es, dass man zusätzlich noch eine Typumwandlung für jedes Element durchführt, obwohl man das eigentlich gar nicht will.

Du kannst jeden Variant, der Daten transportiert wieder in seinen Ausgangs-Typ zurückwandeln, in dem du bei der "Variant to Data" Primitive den entsprechenden Datentyp anklemmst. Wenn du aus programmtechnischen Gründen nicht weißt was du am anderen Ende reingeschoben hast, weil du das ganze z.B. in einer queued State-Machine verwendest, dann verschick nicht den Variant alleine, sondern einen Cluster aus Variant und einem Enum, dass dir sagt welcher Datentyp denn nun zum Umwandeln ankommt, dann kannst das in einer Case-Struktur wieder aufdröseln. Man bewegt sich dann zwar auch etwas vom Datenfluss-Modell weg, funktioniert in der Praxis aber ganz gut


[gelöst]prüfen ob ein Variant ursprünglich das Cluster x war - achim @ FZK - 15.07.2009 14:33

OpenG hat mit hier geholfen...
Danke nochmals für den Tipp.

Problem gelöst.

Gruß Achim