Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
01.10.2007, 08:54 (Dieser Beitrag wurde zuletzt bearbeitet: 01.10.2007 09:04 von Graf_Dracula.)
ich habe eine Software, auf deren API ich mittels LV 7.1 zugreife.
Wenn ich bestimmte Daten auslese, bekomme ich eine Variant zurückgeliefert.
In diesem Variant sind im Moment 7 Einträge, die ich generiert habe, 5 Strings und
2 Integer-Werte ( String, Int, String, String, String, String, Int).
Wie oder mit welcher Funktion kann ich herausbekommen, welcher von diesen
7 Einträgen nun ein String und welcher ein Integer ist ?
Klar, jetzt im Moment weiß ich es, aber wie kann ich das herausbekommen,
wenn die Stelle, die Anzahl oder der Datentyp ansich sich ändert, variabel ist?
Im Moment wandle ich das (den oder die ???) Variant mittels "Variant nach Daten"
in ein String-Array um. Klar, zum Anzeigen reichts, da später aber mal darüber
tatsächlich variable Daten kommen können, würde ich gern vorher wissen,
welcher der jeweiligen Daten welcher Datentyp sind um sie dementsprechend
zu extrahieren und verarbeiten zu können.
Mittels "Variant nach String" bekomme ich einen Typen-String und einen
Daten-String, der Daten-String ist leer (hat jedoch eine Länge von 16)
und im Typen-String sind 3 Einträge ( 6, 132, 1 ). Warum 3 Einträge beim
Typen-String für 7 Einträge beim Daten-String, wie kann/muss ich das
aufschlüssen, oder gehören die nicht zusammen ?
Selbst wenn ich versuchen würde das aufzuschlüsseln ... Datentyp 6 ist UInt16Bit,
die 1 ein 8BitInt und 132 ist zumindest in meiner Hilfe nicht aufgeführt ... ???
Wie kann ich also den jeweiligen Datentyp zum jeweiligen Element im Variant in Erfahrung bringen ?
' schrieb:In diesem Variant sind im Moment 7 Einträge, die ich generiert habe, 5 Strings und
2 Integer-Werte ( String, Int, String, String, String, String, Int).
Wie oder mit welcher Funktion kann ich herausbekommen, welcher von diesen
7 Einträgen nun ein String und welcher ein Integer ist ?
Klar, jetzt im Moment weiß ich es, aber wie kann ich das herausbekommen,
wenn die Stelle, die Anzahl oder der Datentyp ansich sich ändert, variabel ist?
gar nicht, es sei denn du hast Lust die ganzen Type Descriptors auseinander zu friemeln. Wenn das deine einzige Chance ist und du darauf angewiesen bist, dann wird dir nichts anderes übrig bleiben als auszuprobieren was für ein Type Descriptor rauskommt, wenn du einen bestimmten Datentyp anklemmst. Dann kannst du nur beten, dass alle Typen die rauskommen auch zu den LV Datentypen kompatibel sind, sonst musst du dich auch noch selber drum kümmern die Bytes selbst zusammenzusetzen.
An der Geschichte beiß ich mir auch immer wieder die Zähne aus bzw. es ist mir einfach zu viel Arbeit. Das Gemeine an der Geschichte ist, dass der Typ im Variant mit angezeigt wird (wenn man per Rechtsklick Typ anzeigen auswählt) man ihn aber nicht ausbekommt. Mit Variant to Data bekommt man als Ergebnis quasi einen Typecast, wenn der möglich ist, mit Variant to flattened String bekommt man die binären Daten und den Type Descriptor, und ich hab bisher noch keine Doku dazu gefunden, nur immer mal wieder n büschen damit rumprobiert.
' schrieb:Mittels "Variant nach String" bekomme ich einen Typen-String und einen
Daten-String, der Daten-String ist leer (hat jedoch eine Länge von 16)
und im Typen-String sind 3 Einträge ( 6, 132, 1 ). Warum 3 Einträge beim
Typen-String für 7 Einträge beim Daten-String, wie kann/muss ich das
aufschlüssen, oder gehören die nicht zusammen ?
Offensichtlich hast du das ganze Array auf einmal bearbeitet. Versuch mal das Array zu indizieren, dann solltest du auch die richtigen Type Descriptors für die einzelnen Daten rausbekommen und schalte mal die Anzeige von deinem String auf "Hex" oder "Code" um, dann siehst du die binären Daten. Dass der String leer erscheint hängt höchstwahrscheinlich nur damit zusammen, dass die Zeichen nicht darstellbar sind
Zitat:Offensichtlich hast du das ganze Array auf einmal bearbeitet.
Versuch mal das Array zu indizieren, dann solltest du auch die
richtigen Type Descriptors für die einzelnen Daten rausbekommen
Ja nee ...
Aus meinem Methodenknoten kommen zwei Variant's heraus,
auf diese kann ich schon mal gar keine Array-Funktionen anwenden,
daher muss ich irgendeine Variant-Funktion verwenden.
Wenn ich auf den Variant die Funktion "Variant-nach-String" anwende,
bekomme ich einen Typen-String und einen Daten-String. In dem
Typen-String sind dann die besagten 3 Einträge.
Bei Variant nach Daten muss ich schon den Datentyp angeben.