LabVIEWForum.de - Schleifenabbruch klappt nicht

LabVIEWForum.de

Normale Version: Schleifenabbruch klappt nicht
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo!

Ich schaffe es irgendwie nicht eine while-Schleife vorzeitig abzubrechen, hoffe jemand sieht den Fehler.

Was mein Subvi machen soll: Es sollen alle am Computer angeschlossenen Geräte durchsucht werden und von dem "richtigen" soll dann der Visa Resourcenname zurückgegeben werden. Um das richtige Gerät zu finden schicke ich ein Befehl :idn? an alle angeschlossenen Geräte und wenn das richtige gefunden wurde (richtige Antwort kommt zurück) dann soll die Schleife abbrechen und der Visa-name ausgegeben werden. Als Eingang kommt ein Stringfeld mit Adressen, wenn das richtige Gerät gefunden wurde will ich aus dem Stringfeld die Adresse auslesen. Der Index vom Feld sollte die Schleifenlaufvariable sein, weil die Schleife beim richtigen Gerät ja abgebrochen wird. Leider läuft die Schleife durch das ganze Feld auch wenn das richtige Gerät gefunden wurde. Ich weiß einfach nicht wieso es nicht abbrechen will.....


[attachment=26801]

Ich hatte es am Anfang ohne Sequenzstruktur versucht und dann noch mit, aber geht beides nicht :-(
Wieso benutzt du die doofe lokale Variable? Das Ergebnis davon sind Race-Conditions vom feinsten.

Also einfach einen Draht ziehen von der Lesepufferanzeige zum Vergleichsoperator. Lokale Variable löschen.

' schrieb:Ich hatte es am Anfang ohne Sequenzstruktur versucht und dann noch mit, aber geht beides nicht :-(
Mach's ohne. So wie jetzt hat sie praktisch keinen Zweck. Die lokale Variable "Index" kannst du dir auch sparen. Wenn du einen Draht ziehen kannst, dann mach' es auch.


Gruß dimitri
Oh danke daran lag es wirklich. Am Anfang hatte ich es aber genau so und es hat nicht geklappt. Obwohl die Strings optisch 100% gleich waren, hat er sie nicht als gleich erkannt.

Ich frag mich wieso es gleich am Anfang so nicht ging.....hm

Danke dir, jetzt klappts :-)!!!
Hallo Neuling,

"Obwohl die Strings optisch 100% gleich waren..."

Ja, das ist so eine Sache mit den Strings! Da gibt es diese ganzen Leerzeichen, Tabs und diverse non-printable chars... Hast du dir deine Strings schon mal als Hexcode angeschaut, um festzustellen, warum ein Test auf Gleichheit nicht funktioniert?

Alternativ: Wenn das gesuchte Gerät nur einmal in deinem Setup vorkommt, kannst du die Antwort auf :IDN? ja auch auswerten, indem du einen bekannten Teilstring suchen lässt (z.B. den gemeldeten Gerätetyp)...

Und ja: VIs werden nur sehr selten besser, wenn man unkontrolliert lokale Variablen einfügt... (Die lokale Variable "Index" ist ebenfalls unnötig, auch hier kann man einen Draht verwenden!)
Bevor Du auf Gleichheit untersuchst, solltes Du beim empfangenen String unbedingt die Funktion [attachment=26821] anwenden.
Danke euch für die Hinweise, versuche in Zukunft darauf zu Achten. Wieso der Vergleich am Anfang nicht geklappt, weiß ich auch nicht. Hatte sogar die Antwort vom Gerät per Copy&Paste in die Vergleichskonstante eingefügt (also die Antowrt mit der Antwort berglichen) und trotzdem wurde keine Gleichheit festgestellt.

Danke nochmals.
100% Dafuer. Mit so einem Problem hatte ich heute auch zu tun. Nach dem Lesen eines Wertes aus einer DB hatte ich die Funktion "Trim Whitespace" verwendet, aber beim Schreiben in die DB nicht..... Jetzt hat ein Bediener (nach 1 Jahr) seinen Wert mit einem Leerzeichen am Schluss gespeichert und schon hat die Untersuchung auf Gleichheit nicht mehr geklappt. Hab's aber Gott sei Dank gleich gefunden. Big Grin

Gruß Markus

' schrieb:Bevor Du auf Gleichheit untersuchst, solltes Du beim empfangenen String unbedingt die Funktion [attachment=55462:clip.png] anwenden.
Referenz-URLs