LabVIEWForum.de
Array durchsuchen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Array durchsuchen (/Thread-Array-durchsuchen--32418)

Seiten: 1 2


Array durchsuchen - hulk - 21.09.2020 11:17

Guten Morgen,

ich habe ein Problemchen.

Ich lese eine Wertetabelle aus.
Spalte A = Testobjekt
Spalte B = Testwerte

Testobejekte können mehrmals mit unterschiedlichen Ergebnissen auftauchen.

Beispiel:

A 1; 2; 3; 4; 5; 1; 2; 3; 4; 7; 1;
B 10; 20; 30; 40; 50; 12; 21; 29; 30; 24; 29;

Array durchsuchen geht ja nur bis zum ersten Treffer. Wie bekomme ich es jetzt hin alle Werte von einem Typ in ein array zu sammeln?
In dem Fall also zum Beispiel: alles Testergebnisse zum Testtyp1

Ich vermute es hängt mit einer For Schleife zusammen


RE: Array durchsuchen - GerdW - 21.09.2020 11:21

Hallo hulk,

Zitat:Ich vermute es hängt mit einer For Schleife zusammen
Ja, eine FOR-Loop ist die effektivste Möglichkeit, ein Array Element für Element abzuarbeiten: alle Treffer ein einem (Ausgabe-)Array sammeln…

Du könntest aber auch eine While-Loop nehmen und bei Search1DArray vorgeben, von wo die Suche aus starten soll! Wenn du weißt, das Element "n" ein Treffer war, dann könntest mit Element "n+1" die Suche fortsetzen…


RE: Array durchsuchen - hulk - 22.09.2020 12:57

Ich hab da mal was gebastelt. Es funktioniert erstmal.
Mit einer FOR Schleife kam ich leider nicht zurecht.
-
Wenn ich mein Element suche, gibt es da die Möglichkeit nach einem Teilstring zu suchen?
"Muster suchen" funktioniert irgendwie nicht mit einem Array.


RE: Array durchsuchen - GerdW - 22.09.2020 13:04

Hallo hulk,

leider hast du die Testdaten vergessen.
Außerdem ging es bei der ersten Frage um Zahlenwerte - und nun verarbeitest du Strings?

Etwas vereinfacht:
[attachment=61303]

Zitat:Wenn ich mein Element suche, gibt es da die Möglichkeit nach einem Teilstring zu suchen?
Ja klar: autoindizierende FOR-Loop und dann jedes Element mittels MatchPattern (o.ä.) testen…


RE: Array durchsuchen - hulk - 22.09.2020 13:42

Hi,

mir war nicht bewußt, dass es ein Unterschied macht.
Das Schlüsselwort ist ein String....
zum Beispiel ABC-C21xxx
oder ABC-C21yyyy
Das xxx oder das yyy interessiert nicht. Also "filtern" auf ABC-C21

Mit diesem hole ich mir dann in einer anderen Spalte strings, die ich in Zahlen umwandel.

Testdaten, muß ich erst anonymisieren.


RE: Array durchsuchen - GerdW - 22.09.2020 14:04

Hallo hulk,

nochmal vereinfacht:
[attachment=61304]


RE: Array durchsuchen - hulk - 27.09.2020 19:12

Hallo Gerd,

És sieht so aus, als ob ich eine dataflow Verständnislücke habe:

Wenn ich meine while loop genau so in eine Casestrukur einer Statemachine packe, warum funktioniert das dann nicht mehr?

Danke

edit: mit der for Schleife geht es


RE: Array durchsuchen - GerdW - 28.09.2020 09:43

Hallo Hulk,

wenn du jetzt mit LV2016 arbeitest, solltest du deine Signatur anpassen!

Zitat:Wenn ich meine while loop genau so in eine Casestrukur einer Statemachine packe, warum funktioniert das dann nicht mehr?
Was genau "funktioniert nicht" mehr?
Hast du eine genauere Fehlerbeschreibung?

Schau mal hier:
[attachment=61310]
Mit deinem Notifier erzeugst du eine RaceCondition!
Was passiert zuerst: neuen Wert in den Notifier schreiben oder Notiifer-Status lesen?
Warum liest du den "Index" nicht vor dem Case, zusammen mit dem "state"?

Die While-Loop habe ich etwas vereinfacht.
LV2016 sollte doch auch schon die ConditionalTunnels unterstützen, die ich im letzten Bild verwendet hatte, oder?

Zitat:edit: mit der for Schleife geht es
Das ist mit dem gezeigten Snippet wenig verständlich.Warum sollte ein FOR-Loop "funktionieren", wo eine While-Loop "nicht funktioniert"?

Edit:
Hulk, Crossposts bitte immer selbst anzeigen!


RE: Array durchsuchen - hulk - 29.09.2020 13:06

Guten Morgen Gerd

sorry für die crossing Geschichte. Mein Miniprogramm wächst schneller als gedacht. Aber prinzipiell bin ich funktionell auf der Zielgeraden.

1) bezüglich der While Schleife habe ich diese einfach 1:1 in ein case gepackt. Aber es hat wohl eine race condition ausgelöst.

2)
Zitat:LV2016 sollte doch auch schon die ConditionalTunnels unterstützen, die ich im letzten Bild verwendet hatte, oder?
Das habe ich mittlerweile gefunden. Ist ziemlich nett und simpler als die Variante mit while.

3) Zusammen mit der for loop habe ich es jetzt in Verwendung. Das VI ist angehängt. Dein Vorschlag mit der while Schleife habe ich noch nicht getestet. Leider hatte ich noch keine Zeit, es zu verstehen.

4) Aktuell habe ich nur noch eine Frage, bevor ich wieder alleine zurecht komme (hoffe ich). Es betrifft die string Suchfunktion.
Die Ergebnisse der Suche enthält zuviele Werte.
Bsp: Das Suchwort aus der Listbox lautet ABC-C21VXER
In der Tabelle gibt es aber auch ABC-C21VXER-E01 . Diese wird ebenfalss mit aufgenommen.
Getestet habe ich mit "Muster suchen" und "Ausdruck" suchen.

Gruß
Steffen


RE: Array durchsuchen - Martin.Henz - 29.09.2020 15:40

(29.09.2020 13:06 )hulk schrieb:  Bsp: Das Suchwort aus der Listbox lautet ABC-C21VXER
In der Tabelle gibt es aber auch ABC-C21VXER-E01 . Diese wird ebenfalss mit aufgenommen.
Getestet habe ich mit "Muster suchen" und "Ausdruck" suchen.
Das Suchwort an sich, macht noch keinen Regulären Ausdruck. wenn du PCRE verwendest und das so wie jetzt einfach in "regular expression" rein stopfst findet er alles was irgenwo "ABC-C21VXER" enthält.

PCRE sollte man schon etwas verstehen bevor es zum Einsatz kommt.
http://www.pcre.org/current/doc/html/pcre2pattern.html

Ich weis leider nicht so genau, nach was du eigentlich genau suchst. Wenn es ganz exakt "ABC-C21VXER" sein soll, dann musst du "\AABC-C21VXER\Z" angeben. Es gibt dabei aber eventuell noch andere Dinge zu beachten, denn manche Zeichen haben in PCRE eine andere Bedeutung (siehe Link oben).