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!
ich hab in einem Formelknoten mehrere Formeln (siehe Bild). Die Zeilen hEb2= und hEb3= sind genau gleich (copy, paste). Wenn ich jetzt in hEb3= die 0,045 zu 0,090 ändere (oder auch jede andere Zahl) ist das Programm nicht mehr ausführbar. Woran kann das liegen?
Gruß
Philipp
11.12.2007, 15:57 (Dieser Beitrag wurde zuletzt bearbeitet: 11.12.2007 23:32 von jg.)
Ich hätte jetzt folgendes gedacht: LabVIEW unterstützt den C/C++ comma operator, daher wird das ganze nicht als Bug gewertet...
Dann wurde zuerst den Wert 0 an bb zugewiesen und danach das Resultat von 045*aa, also 45. Kommt aber wie gesagt 0 raus.
' schrieb:ich nehm alles zurück und behaupte das Gegenteil...
Mit Punkt geht's. Da kann sogar der Support noch was lernen.
Grüße
Philipp
PS Welche Bedeutung hat dann das Komma?
Der Kommaoperator in C ist eine Auflistung von Expressions. Jede Expression kann zum Beispiel eine Zuweisung sein, oder ein mathematischer Ausdruck. Das Resultat der Kommaexpression, so sie denn einer Variablen zugewiesen wird oder in einem Ausdruck verwendet wird (etwa als condition für ein if Statement) ist immer der letzte Ausdruck in der durch Komma unterteilten Liste, hier also wie von VDB schon ausgesagt 045*aa.
Da die LabVIEW FormulaNode eine quasi C syntax unterstützt und damit die durch Komma unterteilte Ausdrucksliste, kann es keine lokalisierten Fliesskommazahlen unterstützen da das in nicht eindeutigen Ausdrücken enden könnte. Aber dann scheint doch irgendwie etwas nicht ganz zu stimmen, da in dem Fall nicht 0 rauskommen sollte solange aa nicht 0 ist.
Habe das schnell mal in 8.2.1 getestet und da bekomme ich ebenfalls 0. Hmm ok! Habe eben mal das C Referenzmanual herausgenommen und da steht, dass der Komma Operator die tiefste Priorität von allen Operatoren hat, noch tiefer dann die Zuweisung. Das heisst ohne Klammern führt C zuerst die Zuweisung aus und danach wird erst die Ausdrucksliste abgearbeitet. Wenn man den Ausdruck in Klammern setzt kommt das erwartete Resultat zurück, da die Ausdrucksliste als Ganzes zuerst ausgewertet wird.
Ich habe heute eine Fehlersuche bei meine Programm durchgeführt und habe dabei folgendes festgestellt.
Szenario:
- Ich trage in einer String-Konstante ein Text ein z.B.: "Test 1" und stelle die Option ''-Code-Anzeigen an ("Tests1").
- Ich kopiere den Inhalt in eine neue String-Kostante. Der Inhalt der String-Konstant ist nun "Tests1", aber die Options-Einstellung des Feldes steht auf Normal. Somit ist die ''-Code-Anzeige: "Test\s1".
Ist das von NI gewollt? Eigentlich erwarte ich, wenn ich ein Text kopiere, das entweder die Einstellungen von der Konstante übernommen werden oder das der Textinhalt von der Einstellung "Normal-Anzeige" kopiert wird.
' schrieb:Ist das von NI gewollt? Eigentlich erwarte ich, wenn ich ein Text kopiere, das entweder die Einstellungen von der Konstante übernommen werden oder das der Textinhalt von der Einstellung "Normal-Anzeige" kopiert wird.
Also vorsicht bei Copy & Paste
Die Kopierfunktion ist keine NI/LV-Funktion, sondern kommt vom Betriebssystem. Wie soll die Zwischenablage denn "wissen", welche Einstellungen du in einer beliebigen SW vorgenommen hast? Also wird nur das kopiert, was wirklich angezeigt wird...und das ist halt "Tests1"
"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)