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!
Hallo Zusammen,
ich habe ein Array aus Referenzen, welche (warum auch immer) vom Typ d(ezimal) sind.
Jetzt möchte ich eine bestehende Referenz, die leider in hex vorliegt (warum nicht in dezimal?) mit denen im Array vergleichen.
Das kann ich nicht, da 1x hex und 2x dezimal.
Ich schaffe es einfach nicht, eine der Referenzen entweder ins hex bzw. dezimal-Format zu übertragen.
(30.03.2018 14:50 )voellig_egal schrieb: ich habe ein Array aus Referenzen, welche (warum auch immer) vom Typ d(ezimal) sind.
Referenzen sind nicht vom Typ "dezimal" (und auch nicht vom Typ "hex"). Eine Referenz ist ein eigener Typ. Ferner "referenziert" eine Referenz (im Normalfall) eine Instanz, die selbst wieder einen Typ hat ...
"Dezimal" und "Hex" sind weder Instanzen noch Typen - beides sind Darstellungsformen von Zahlwerten (von Zahlwerten, nicht von Typen ...)
Zitat:Jetzt möchte ich eine bestehende Referenz, die leider in hex vorliegt (warum nicht in dezimal?) mit denen im Array vergleichen.
Das kann ich nicht, da 1x hex und 2x dezimal.
Referenzen und Hex haben nichts gemein.
Aber:
Es gibt unterschiedliche Typen von Referenzen - da mag die eine dargestellt werden in Hex-Darstellung und eine andere in Dezimal-Darstellung.
Weiterhin:
Referenzen mit unterschiedlichem Typ kann man nicht vergleichen - klar: is' wie bei String und Zahl ...
Zitat:Hat wer eine Idee?
Referenz auf was? Das Was ist entscheidend. Referenzen auf Instanzen vom selben Typ, z.B. DBL-Zahl, kann man vergleichen. Referenzen, von denen die eine Instanz einer Zahl, die andere eine Instanz von VI ist, - da brint ein Vergleich nichts.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
30.03.2018, 17:22 (Dieser Beitrag wurde zuletzt bearbeitet: 30.03.2018 17:40 von voellig_egal.)
Ich habe ein Array von Referenzen auf VI´s. Diese VIS`s möchte ich gezielt beenden können. Dabei schaue ich im invarianten VI auf die Referenz, vergleiche diese mit dem Array aus Referenzen und entferne es, wenn die Refs gleich sind.
Das Problem ist hier tatsächlich, dass ich beim Vergleichen (Sonde reingeapckt) bei dem einen der Wert der Referenz aufs VI ein hex-Wert und bei dem Array alle Referenzwerte als dezimal dargestellt werden. Daher kann ich die nicht vergleichen.
Frage: Gibt es eine andere Möglichkeit, wie ich Referenzen doch vergleichen kann? Es sind die gleichen Referenztypen (also immer auf ein VI). Oder kann ich das irgendwie in einen String umwandeln und hier dann umwandeln und vergleichen?
Danke Leute!!
Christian
30.03.2018, 17:29 (Dieser Beitrag wurde zuletzt bearbeitet: 30.03.2018 17:33 von GerdW.)
Zitat:der Wert der Referenz aufs VI ein hex-Wert und bei dem Array alle Referenzwerte als dezimal dargestellt werden. Daher kann ich die nicht vergleichen.
Wieso kann man die nicht vergleichen, nur weil die "Darstellung" anders ist???
Zitat:Ich habe ein Array von Referenzen auf VI´s. Diese VIS`s möchte ich gezielt beenden können. Dabei schaue ich im invarianten VI auf die Referenz, vergleiche diese mit dem Array aus Referenzen und entferne es, wenn die Refs gleich sind.
Warum holst du dir nicht über die Referenz den VI-Namen und vergleichst den?
Warum hängst du nicht einfach ein BeispielVI an, welches dein Problem demonstriert?
Ja, anscheinend klappt es wegen der Darstellung nicht. Theoretisch dachte ich, ich sammle alle VI-Refs in einem Array und suche dann das entsprechende über nen Vergleich, was ich beenden möchte.
Mit dem Namen der Kopie klappts, aber da brauche ich halt Eigenschaftsknoten und mit dem Vergleich der Refs wäre es praktischer.
30.03.2018, 18:51 (Dieser Beitrag wurde zuletzt bearbeitet: 30.03.2018 19:01 von IchSelbst.)
(30.03.2018 17:22 )voellig_egal schrieb: Ich habe ein Array von Referenzen auf VI´s.
Leider sieht man die Werte der Referenzen, wenn man den Array-Inhalt in einer Sonde ansieht, in Dezimaldarstellung. Das ist aber nicht dein Problem!
Zitat:Diese VIS`s möchte ich gezielt beenden können.
Zitat:Dabei schaue ich im invarianten VI auf die Referenz, vergleiche diese mit dem Array aus Referenzen und entferne es, wenn die Refs gleich sind.
Kann ich nachvollziehen.
Zitat:Das Problem ist hier tatsächlich, dass ich beim Vergleichen (Sonde reingeapckt) bei dem einen der Wert der Referenz aufs VI ein hex-Wert und bei dem Array alle Referenzwerte als dezimal dargestellt werden.
Die Darstellung einer einzelnen Referenz geschieht in Hex (klingt blöd ist aber so) ...
Zitat:... Daher kann ich die nicht vergleichen.
Du hast hier nicht Recht. Das Problem muss wo anders liegen.
Ich tippe mal auf folgendes: Du hast wahrscheinlich irgendwo einen Typcast produziert ("nach oben" oder "nach unten") , sodass die in der FGV abgelegten Referenzen (die im Array) nicht mehr genau den selben (nicht den gleichen) Typ haben wie die Referenz des zu löschenden VIs. Und weil jetzt die Referenzen nicht mehr (genug) typ-identisch sind, kann man sic nicht vergleichen.
Frage:
Du musst ja irgendwo den Vergleich programmiert haben. Wenn ich (und du) hier von "Vergleich geht nicht" reden, dann meinen wird automatisch, dass das Programm nicht ablauffähig ist. Ist dem so?
Oder:
Ist das Programm zwar mit dem Vergleich ablaufbar, aber der Vergleich bringt immer False?
(30.03.2018 17:44 )voellig_egal schrieb: Mit dem Namen der Kopie klappts, aber da brauche ich halt Eigenschaftsknoten und mit dem Vergleich der Refs wäre es praktischer.
In diesem Falle tippe ich auf folgendes:
Du erstellt von der selben Instanz (also von einem VI) zwei Referenzen. Obwohl beide Referenzen dieselbe(!) VI-Instanz referenzieren, haben die Referenzen selbst einen unterschiedlichen Wert. Das ist wohl auch richtig so. Immerhin sind es zwei Referenz-Instanzen.
Du darfst also nur eine einzige Referenz(-Instanz) erstellen und musst genau diese eine Referenz (bzw. den Referenzwert) überall verwenden.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Der Vergleich der VI`s funktioniert tatsächlich. Die Referenzen der VI´s liegen auch alle wie gewünscht vor. Ich lade schön VI´s in die Subpanels und entferne Sie auch wieder (dafür brauche ich den Vergleich), aber nur mit dem Umweg über den PropertyNode.
Ich habe die Referenzen vom Wert (hex nach dezimal) her umgewandelt und das passt...also der Vergleich würde bei gleicher Darstellung wohl klappen. Das richtige Programm läuft auch, nur der Vergleich bringt "False".
Jetzt habe ich es über den Eigenschaftsknoten "Name der Kopie" gemacht und es funktioniert. Aber es macht nicht richtig zufrieden, weils sicher einfacher geht.
Ich sehe die Werte der Referenz ja immer nur über die Sonde in der FGV --> und dort sind die im Array gesammelten Refs immer Dezimalzahlen und die neu hinzugefügte VI-Ref zeigt die Sonde als Hex an. Im Array ist dann alles Dez. Komme ich zum Vergleich, will dann dez mit hex-Werten verglichen werden...dann krachts.
Ich type-caste leider auch nichts...die VI-Referenz geht direkt in die FGV zum "Sammeln" im Array. (s. Anhang)
Kann es irgendwie mit strikten und nicht strikten VI´s zu tun haben? Ich denke, da hab ich noch was nicht richtig gemacht (dirty dot)...
Also es funktioniert, aber wenn noch einer ne Idee hat, was ich bei den Refs falsch oder anders machen muss.
(31.03.2018 09:14 )voellig_egal schrieb: Kann es irgendwie mit strikten und nicht strikten VI´s zu tun haben? Ich denke, da hab ich noch was nicht richtig gemacht (dirty dot)...
Ich gehe bisher davon aus, dass es irgendwie mit einem wenn auch unbeabsichtigtem Typcast zu tun hat.
Ist das eine Vi, das man in dem einen Bild sieht, die FGV? Man sieht da einen roten Konvertierungspunkt. Ist der Eingang eine Variant? Dann könnte beim Umwandeln in die Referenz ein Informationsverlust auftreten. Ich gehe davon aus, dass der Typ am Variant Typidentisch sein muss, ebenso der Typ des Arrays bei der Definition des Arrays.
Irgendwo musst du ja einen Vergleicher haben. Sind an dem Vergleicher auch diese roten Konvertierungspunkte?
Hast du mal die Hilfe zum Vergleicher (Vergleich bzw. Ungleich) gelesen? Laut der Hilfe sollte es funktionieren.
Ach ja, noch eins:
Auch wenn ich nix weiß, eines weiß ich ganz genau: An der Darstellungsart Dezimal bzw. Hexadezimal liegt es auf jeden Fall nicht.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Hier noch meine Lösung als vi, falls jemand auch vor solch einem Problem steht.
Ich habe ein Array aus vi-referenzen aller geladenen Subpanels.
Wenn ich eins löschen möchte, übergebe ich die entsprechende VI-Ref in dieses VI hier, vergleiche und erhalte den Index der zu löschenden Referenz (und der Position dieses Panels in der langen Liste aus Sup-Panels).
Damit kann ich dann auch Infos einem bestimmten Panel zuweisen oder abrufen.
Bei mir klappts so. Vielleicht nicht die beste Lösung. Bin wie immer zum Lernen bereit :-)