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!
Hi,
ich habe ein sehr ähnliches Problem und wollte daher keine neue Forum-Topic eröffnen.
Ich möchte ein Cluster aus 4 Datentypen erstellen, die vorher in diese umgewandelt werden müssen (mein Polymorphes! Sub-VI mit dem blauen Pfeil in dem Bild).
Case 0-2 erstellen mir die Werte für die ersten 3 Datentypen (Bool, Uint16 und Uint 32), von dort aus sind alle anderen Werte SGLs, die ich daher in einem Array zusammenfasse.
Das Problem ist nun, dass ich natürlich so wie ich es programmiert habe erst einmal drei Nullen in den Array bekomme (nämlich von Case 0,1 und 2). Wie man sehen kann schneide ich diese im Moment ab. Gerds erste Lösung kommt für meinen Fall nicht in Frage, die zweite natürlich schon (also ich könnte ein Schieberegister nutzen, aber das würde zu noch mehr Kabelsalat führen. Gibt es nicht die Möglichkeit statt einer konstanten quasi einen leeren Wert zu nehmen?
Case 0 und 1 sehen fast genau so aus wie 2, daher hab ich sie nicht angefügt
Habe grad eine Lösung für das Problem gefunden
Und zwar kann man auf den Tunnel der Forschleife mit rechtsklick klicken und dann unter Tunnelmodus "bedingt" einstellen. Nun verbindet man in den nicht gewünschten Cases mit einer False-konstante, wenn kein Wert angefügt werden soll.
29.10.2014, 12:40 (Dieser Beitrag wurde zuletzt bearbeitet: 29.10.2014 12:42 von GerdW.)
Zitat:Nein. Wie soll ein "leerer" numerischer Wert aussehen? Kannst du das mit Mathe-Kenntnissen der 6. Klasse erläutern?
Mit einem leeren Wert meine ich, dass ich quasi "nichts" als Ergebnis bekomme.
Ich habe z.B. eine Case Struktur (wie im Beispiel) die erst 3mal false und dann true (true sei für das Beispiel einmal der Wert 2) gibt. Im false Fall, habe ich das Array mit einer Konstanten [0] verbunden.
Nun bekomme ich als array 0 0 0 2 2 ... 2. Ich möchte aber eigentlich nur die zweien ohne Nullen davor haben. Also, dass ich bei false nichts bekomme.
Zitat:Wieso?
Ein Schieberegister, und jeweils ein BundleByName im Case…
Kannst Du mir das einmal als screenshot zeigen? Ich kann mir das irgendwie nicht vorstellen wie das funktioniert?
Zitat:Wenn man Array-Elemente indizieren will, nimmt man IndexArray. Wieso musst du das Array erst in einen Cluster umwandeln?
Achja stimmt, danke, da stand ich wohl aufm Schlauch
29.10.2014, 14:05 (Dieser Beitrag wurde zuletzt bearbeitet: 29.10.2014 14:15 von GerdW.)
(29.10.2014 13:57 )J.Engel schrieb: Mit einem leeren Wert meine ich, dass ich quasi "nichts" als Ergebnis bekomme.
Diesen Gedankengang solltest du grundsätzlich aus deinem biologischen Datenspeicher entfernen, wenn du mit Labview weiterarbeiten möchtest. Das Datenflussmodel ist die Grundlage von Labview. Wenn du demnach Eingänge verdrahtest, solltest du dir IMMER im klaren darüber sein, dass dort ein Ergebnis ankommen MUSS. Die Denkarbeit muss also dann davor oder danach gemacht werden.
Achso, danke Gerd für das angefügt Bild. Ich werde mal versuchen das auf mein Beispiel zu übertragen.
Also was ich mit nichts meine ist mathematisch eine Leere Menge oder halt tatsächlich nichts: Wie gesagt ich möchte nicht 0, 0, 0, 2,2,2 sondern einfach nur 2,2,2 somit steht dann vor den zweien nichts. Sprich bei meinem case: True: füge eine 2 hinzu, bei false: füge kein weiteres Element hinzu (also auch keine 0).
Zitat:Also was ich mit nichts meine ist mathematisch eine Leere Menge
Eine leere Menge kannst du nur auf einem Draht darstellen, der ein Array transportiert. Eine leere Menge ist für skalare Werte nicht definiert…
Zitat:case: True: füge eine 2 hinzu, bei false: füge kein weiteres Element hinzu
Dann mach das doch genau so wie du es schreibst: Im TRUE-Case ein BuildArray, im FALSE-Case keine Operation, sondern nur den Draht durchführen!
Letztendlich macht das der ConditionalTunnel genau so - aber eben nur für LV2012+…