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 das problem, dass ich 5 bedienelemente hab, bei denen je nachdem welches beuntzt wird insgesamt nur 2 möglich sind. die abfrage dazu welches wannn aktiv ist stellt kein problem dar.
Das Dumme ist nur, wenn in einem feld ein wert drin steht und der benutzter diesen einfach nur löschen will mit rücktaste oder entfernen, dann schreibts den wert wieder hinein. Dann muss der Benutzer selber NaN reinschreiben um zu sagen da steht jetzt kein wert drin.
ich hab jetzt nur die möglichkeit für jedes element das event abzufangen wenn gelöscht wird, das dann NaN reingeschrieben wird. Das ist halt sehr aufwendig für so eine simple Sache.
gibts da denn keine einstellung im Labview, das wenn man den Wert löscht, dass er einfach NaN rein setzt?
wie stellst du dir eine Zahleneingabe vor, die keine Zahl enthält? Kannst du das mal genauer definieren? Welchen Wert soll so eine Zahleneingabe liefern?
(Du könntest ja stattdessen eine String-Eingabe verwenden. Dann musst du die Benutzereingaben nur auf zulässige Zeichen[kombinationen] ala "1", "1,1", "1e0", "1,1e+0", etc. prüfen...)
' schrieb:wie stellst du dir eine Zahleneingabe vor, die keine Zahl enthält? Kannst du das mal genauer definieren? Welchen Wert soll so eine Zahleneingabe liefern?
Wenn du die Zahl im numerischen Bedienelement markierst und z.B. über "Entf" entfernst, dann ist das Bedienelement leer. Verlässt du das Bedienelement nun, steht "0" darin. Und dort soll "NaN" stehen, wenn die Zahl entfernt wurde.
So verstehe ich das.
Ich wüsste aber nicht, wie man das mit einer Ereignisstruktur prüfen kann. "Wertänderung" wird z.B. erst nach der Änderung ausgeführt. D.h. es steht bereits die "0" im Bedienelement. Man kann also nicht auf "leerer String" o.ä. prüfen.
Und auf was man vergleichen kann, wenn die Ereignisse "Taste gedrückt" o.ä. genommen werden, wüsste ich auch nicht.
Die Möglichkeit der Stringeingabe wurde ja von GerdW schon genannt. Dagegen spricht doch überhaupt nichts. Das Ganze gehört natürlich in eine Schleife, und erst wenn ein ordentlicher Zahlenwert eingegeben wurde bzw. nichts drin steht, wird der Bediener vom Programm in Ruhe gelassen.
Wenn es denn aber unbedingt ein Numerisches Elemet bleiben soll, dann müßtest Du dich, statt die Rücktaste zu verwenden, lieber mit der rechten Maustaste anfreunden:
Möglichkeit 1:
Für die Anzeige NaN als Standardwert festlegen. Wenn das Prog. läuft: rechte Maust. --> Standardwert wiederherstellen.
Möglichkeit 2:
Wenn überhaupt kein Wert in der Anzeige stehen soll: Das Element in einen Arrray packen (das läßt sich so tricksen, daß das keiner merkt). Wenn das Programm läuft: Rechte Maustaste --> Element löschen.
Der Punkt ist, dass wenn man den Wert löscht eben keine 0 drin steht sondern der eben gelöschte Wert.
Und NaN was ja schließlich ein leeren Wert darstellt muss man händisch eintragen.
Und die Frage ist, warum Labview nicht einfach selbst NaN reinschreiben kann wenn man den Wert löscht.
Ich kann das ganze schon per Wertänderung überprüfen und dann kann ich auch wenn es mit Entf gelöscht wurde NaN reinschreiben lassen, aber das ist halt super umständlich.
05.10.2010, 15:41 (Dieser Beitrag wurde zuletzt bearbeitet: 05.10.2010 15:48 von GerdW.)
mein Gedanke war eher, auf das Tastendruck-Event zu prüfen (vielleicht auch auf die Filter-Variante): Wenn Taste=Entf dann Wert=NaN!
Dann brauchst du nicht notwendigerweise auf ein ValueChange-Event zu warten...
@Andy:
Warum sollte LabVIEW NaN in eine numerische Anzeige schreiben, wenn du die Entf-Taste drückst? Wäre eine Null nicht der "natürlichere" Wert?
Was ich damit sagen will: Es geht hier darum, dass LabVIEW etwas machen soll, was du als schön empfindest. Was du als schön empfindest, wirkt auf andere eher verstörend - weil es kein "Standardverhalten" ist. Wenn du bei einem bestimmten Benutzerverhalten einen bestimmten Wert haben willst, musst du dein VI so programmieren! Wie, steht ja ein paar Zeilen höher...
P.S.: Standardverhalten ist hier folgendes: Der Benutzer löscht eine Zahleneingabe. Diese Eingabe ist damit undefiniert. Um wieder einen definierten Zustand herzustellen, fügt LabVIEW den letzten bekannten Wert wieder ein...
' schrieb:Was ich damit sagen will: Es geht hier darum, dass LabVIEW etwas machen soll, was du als schön empfindest. Was du als schön empfindest, wirkt auf andere eher verstörend - weil es kein "Standardverhalten" ist.
Genau das ist der Punkt: Wir kennen das Verhalten so.
Genaugenommen ist das Verhalten von LabVIEW unlogisch. Denn wenn das Feld gelöscht wird, steht darin keine Nummer mehr ("not a number") und somit wäre "NaN" eigentlich der zu erwartende Wert.
Aber gut, darüber könnte man ewig diskutieren.
Fakt ist jedoch, dass es LabVIEW von Haus aus nicht kann.
Da bleibt wohl nichts anderes übrig, als das selbst zu basteln oder eine Alternative zu suchen (zusätzliches Boolsches Bedienelement für "Zahl entfernen" o.ä., das dann "NaN" einträgt).
' schrieb:mein Gedanke war eher, auf das Tastendruck-Event zu prüfen (vielleicht auch auf die Filter-Variante): Wenn Taste=Entf dann Wert=NaN!
Das geht nur in 2 Fällen:
- Es gibt nur ein Zeichen im Element
- Alle Zeichen im Element sind vor dem Klick auf "Entf" markiert
Einzelne Zeichen soll man per "Entf" löschen können (Standardverhalten, das der Benutzer hier auf jedenfall erwartet, da er es von Win/Linux & Co. so kennt)