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!
10.04.2015, 09:30 (Dieser Beitrag wurde zuletzt bearbeitet: 10.04.2015 09:31 von TDO.)
ich schreibe gerade ein Konfigurationstool. Der Benutzer soll auf dem Frontpanel verschiedene Einstellungen vornehmen können.
Die Frontpanelelemente sind dynamisch, d.h. deren Untertitel ist sichtbar und wird durch Werte aus einer .ini Datei gefüllt. Es wurden Dummy Elemente angelegt, welche nicht dargestellt werden, wenn Sie nicht benötigt werden. Das ganze hat den Vorteil, dass neue Konfigurationsmöglichkeiten eingefügt werden können, indem die .ini Datei und nicht das Programm selbst angepasst wird.
So.. jetzt möchte ich die Möglichkeit erstellen, damit die vorhandene Konfiguration in einer seperaten .ini Datei abgespeichert und geladen werden kann.
Wenn ich mir über eine Propertynode alle Referenzen auf Frontpanelelemente hole, alle Elemente in einer Schleife durchgehe und mir die Werte von den Elementen holen möchte, bekomme ich diese nur im Datentyp Variant.
Wie komme ich über diesen Datentyp an die eigentlichen Werte, sprich: Ist ein bool Element True oder False, was steht in einem String Control usw.
Die Frontpanelelemente können bool, string oder auch Integer Werte sein.
Mit dem Eigenschaftsknoten "ClassID" kannst du den Datentyp des Controls auslesen.
Mit Hilfe der ClassID ist es möglich den Variant-Datentyp in den spezifischen Datentyp (Boolean, String, etc.) zu konvertieren.
Gruss
Chris
10.04.2015, 11:23 (Dieser Beitrag wurde zuletzt bearbeitet: 10.04.2015 11:24 von TDO.)
vielen Dank für die Antwort!
Das war der Anstoß, den ich gebraucht habe.
Über die Klassen-ID des jeweiligen Elements kann dessen Typ ermittelt werden und somit kann der "Typ" Anschluss des Variant to Data VIs dementsprechend verbunden werden!
Funktioniert super!
Vielen Dank.
Gruß
TDO
(10.04.2015 11:19 )Morpheus schrieb: Mit dem Eigenschaftsknoten "ClassID" kannst du den Datentyp des Controls auslesen.
Mit Hilfe der ClassID ist es möglich den Variant-Datentyp in den spezifischen Datentyp (Boolean, String, etc.) zu konvertieren.
Gruss
Chris
Danke Chris, mir ist der Gedanke gleichzeitig gekommen! :-)
So, jetzt kommt der umgekehrte Fall...
Wenn ich jetzt so eine Konfig Datei wieder laden will und die FP Elemente dementsprechend füllen will, brauche ich ja erneut den Variant Datentyp.
Ich lese also die ganzen Konfig Werte aus der .ini Datei ein. Diese stehen mir dann als String zur Verfügung.
Wenn ich das über das "ToVariant" VI mache, bringt er mir leider einen Fehler.
Wie kann ich die Daten also typenabhängig wieder auf meine FP Elemente übertragen?
Zitat:Die Frontpanelelemente können bool, string oder auch Integer Werte sein.
Warum speicherst du sie dann nicht in deiner INI-Datei als eben diese Datentypen? Das wird doch von den ConfigFile-Funktionen unterstützt!
Zitat:Wenn ich jetzt so eine Konfig Datei wieder laden will und die FP Elemente dementsprechend füllen will, brauche ich ja erneut den Variant Datentyp.
Nein, du brauchst den Datentyp, der zum FP-Element passt.
Zitat:Ich lese also die ganzen Konfig Werte aus der .ini Datei ein. Diese stehen mir dann als String zur Verfügung.
Wenn du sie passend gespeichert hättest, würdest du nicht String, sondern Bool/I32/String bekommen - passend zum FP-Element.
Idee:
- Lege dir deine FP-Elemente mit den Labels String_nnn, Bool_nnn und INT_nnn an, mit "nnn" jeweils als fortlaufende Nummer. Die Caption dieser FP-Elemente kannst du benennen, wie du willst.
- Wenn du jetzt Daten speichern willst, kannst du anhand des Labels sofort den Datentyp erkennen. In der INI-Datei landet dann jeweils die Keys "String_nnn_Caption" und "String_nnn_Value", genauso für die Bools und INTs…
- Beim Einlesen der INI-Datei kannst du dir die Keys ausgeben lassen und gleich passend einlesen und zuweisen…
- Für den "Komfort" beim Erstellen der INI-Datei kannst du ja einzelne Gruppen für STRING, BOOL und INT anlegen…