12.01.2007, 13:25
(Dieser Beitrag wurde zuletzt bearbeitet: 12.01.2007 13:25 von horstboehse.)
Beitrag #1
|
horstboehse
LVF-Neueinsteiger
Beiträge: 4
Registriert seit: Jan 2007
7.1
2004
kA
Deutschland
|
flatten to string : type string
Hallo!
Ich suche schon seit längerem nach einer eleganten Methode, VI-Ein- und Ausgänge unabhängig von dem Übergabedaten-Typ zu machen.
Dafür gibt es ja zB die VIs "Flatten to String" und "Unflatten from string". Ersteres flattet die Daten und gibt zusätzlich ein ominöses Ineteger-Array mit dem Namen "type sting" zurück.
Meine Hoffnung lag nun darin, dass in diesem Array die Struktur des ursprünglichen Datentyps steht und man damit den String wieder unflatten kann.
Aber das "Unflatten from string" -VI erwartet als Übergabeparameter den konkreten Datentyp.
Nun meine Fragen:
Wozu dient dieses ominöse Array "type String"?
Gibt es eine Möglichkeit, auch ohne die explizite Angabe des Datentyps ein Unflatten durchzuführen?
Ich hoffe, ihr könnt mir weiter helfen.
Gruß, Daniel
|
|
|
12.01.2007, 13:47
(Dieser Beitrag wurde zuletzt bearbeitet: 12.01.2007 14:00 von Achim.)
Beitrag #2
|
Achim
*****
Beiträge: 4.223
Registriert seit: Nov 2005
20xx
2000
EN
978xx
Deutschland
|
flatten to string : type string
Hi,
der TypeString ist doch wohl ne Beschreibung, wie deine "flattened Data" zu interpretieren ist. Meiner Einschätzung nach brauchst du das zwingend! So wie ich's verstehe, kannst du diesen TypeString aufspalten und darin enthalten ist die Information "TypeDescriptor" (die letzten beiden Stellen). Such danach mal in der LV-Hilfe! Allerdings gibts das bei LV8.x nicht mehr. Hier könntest du nach "Variant" wandeln und dann den Daten Attribute (z.B. ne "1" ) hinzufügen. Dieses Attribut könntest du in nachfolgenden VI's dann interpretieren, z.B. 1=boolesches Array, 2=double,....und dann mit ner Case-Struktur in den passenden Typ wandeln. So könntest du immer Variant weitergeben, in jedem VI halt dann erst mal den Typ checken...
Um Eingänge "unabhängig" vom Übergabetyp zu machen, wäre die Alternative wohl, ein polymorphes VI zu erstellen. Dabei werden mehrere VI's mit dem stets gleichen Ein-/Ausgangsschema (Connector), aber verschiedenen Datentypen erstellt (bool, double, int, var, array, cluster, ref.). Jedes VI verarbeitet die ihm entsprechenden Daten. Alle VI's werden aber als polymorphes VI "zusammengeführt", d.h. du lädst "MyPolymorphVI.vi" in den Code, und schließt eine beliebigen Datentyp an. Ist dieser in deinem VI definiert, passt sich das VI automatisch an...aber das kennst du sicher...war nur so'n Gedanke...
Gruss
Achim
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
|
|
|
15.01.2007, 08:15
Beitrag #3
|
horstboehse
LVF-Neueinsteiger
Beiträge: 4
Registriert seit: Jan 2007
7.1
2004
kA
Deutschland
|
flatten to string : type string
Danke, du hast mir schon mal weitergeholfen.
Allerdings möchte ich nicht nur einzelne Variablen übergeben, sondern ein Cluster aus vielen Elementen.
Und immer, wenn ich ein Element hinzufügen will, muss ich in jedem Vi die Ein- und Ausgänge ändern. Das nervt.
Kann man diesen Type-String nicht irgendwie in den Cluster-Typ zurückwandeln, um im Sub-VI zu unflatten?
Ich möchte halt gern erreichen, dass ich dem Cluster ein Element hinzufügen kann, ohne dass die Sub-VIs, die dieses Element nicht brauchen,
sondern lediglich andere aus dem Cluster, davon berührt werden.
Hatte überlegt, die einzelnen Clusterelemente in einem Variant als Atribute zu speichern und in den Sub-VIs wieder auszulesen. Aber das ist auch irgendwie umständlich!?
Gruß, Daniel
|
|
|
15.01.2007, 08:53
(Dieser Beitrag wurde zuletzt bearbeitet: 15.01.2007 08:55 von Achim.)
Beitrag #4
|
|
|
15.01.2007, 09:05
(Dieser Beitrag wurde zuletzt bearbeitet: 15.01.2007 09:33 von Lucki.)
Beitrag #5
|
|
|
15.01.2007, 09:40
Beitrag #6
|
horstboehse
LVF-Neueinsteiger
Beiträge: 4
Registriert seit: Jan 2007
7.1
2004
kA
Deutschland
|
flatten to string : type string
@Achim:
Danke, du bist der Beste!!
Genau das wollte ich.
Aber ich wusste bis jetzt nicht, dass man das irgendwie als Strict Type Def speichern kann.
Vielen Dank
@Lucki:
Danke dir auch!
|
|
|
| |