LabVIEWForum.de - Mehrere Strings teilen und in ein Array einfügen

LabVIEWForum.de

Normale Version: Mehrere Strings teilen und in ein Array einfügen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Guten Tag,

folgende Situation liegt vor. Durch das Senden eines Bestimmten Befehls erhalten ich einen Rückgabestring. In diesem sind die Werte jeweils durch einen Unterstrich getrennt z.B. @2_1000_2000_23_234*. Wie zu erkennen ist, beginnt der String mit einem @ und einer Zahl zwischen 1 und 3 und endet mit einem *.

Ich habe schon geschafft die einzelnen Werte auszulesen. Vorher nur jede einzeln, d.h. Ich habe dreimal die selbe Schleife, nur mit unterschiedlichen Eingangsparamtern und unterschiedlicher Ausgabe in verschiedenen Arrays.
Nun möchte ich das aber alles zusammen fügen, da die Grundsyntax doch die selbe ist. Dabei habe ich mir gedacht, dass ich die Werte in ein 2D-Array schreibe und jede Zahl (1,2,3) einer Zeile(0,1,2) zugewiesen wird. (Jede Zahl, steht für einen gesonderten Befehl, mit eigenen Ausgabewerten. Stringlänge kann sich ebenfalls unterscheiden).
Dieses klappt aber bei mir nicht so richtig. Erschreibt alle Werte nur in eine Zeile und das hinter einander. Ich möchte aber, dass die alten Werte einfach überschrieben werden. Die anderen Zeilen werden gar nicht bearbeitet, bzw. nur für einen Bruchteil einer Sekunde, bis die Werte wieder in Zeile 0 überspringen.

Hier ist mein VI.

[attachment=43303]

Habt ihr für mich einen Vorschlag, wie ich das ganze besser verarbeiten kann.

Wenn ich es schaffe, die Werte in die passenden Felder einzuträgen, dann kann ich die gut weiterverarbeiten. Ich möchte dann einfach die Werte in ein extra Array schreiben. Könnte man dann nicht auch ein 3D- Array machen? Aber das kommt erst danach.

gruß Atilla
Hallo Atilla,

sieh dir mal die Autoindizierung von Schleifen an - da kannst du dir einiges sparen und es wird deutlich effizienter.
Außerdem kannst du die Tiefstriche prima als Trennzeichen nehmen, um ein 1D-Array zu erzeugen.


Gruß, Marko

Nachtrag:
Wenn du deine Auswahl schon nicht mit Enums machst, dann gehören da mindestens keine float-Werte rein, aber das ist mehr oder weniger ´ne Schönheitskorrektur
Mit Spreadsheet-String To Array kannst du schon mal wunderbar einen String in ein 1D-Array von Zahlen verwandeln:
[attachment=43304]
Gruß, Jens
Hallo Marko,

danke erstmal für deine Antwort.
Also ich habe mir mal den Abschnitt zur Autoindizierung durchgelesen, aber ich weiß nicht wie du es meinst mit der effiziens. Wenn ich es richtig verstanden habe müsste bei mir die Autoindizierung aktiviert sein, so dass meine SChleife dann am Ende ein Array übergibt, so wie gewollt. Wenn ich sie deaktiviere bekomme ich nur einen Skalar, bzw einzelnen Wert zurück geliefert. Meine Schleife schnappt sich ja den String und zerhackt in genau an der Stelle wo der _ ist und gibt die einzelnen Werte schon alle Array zurück. Einzelne Anweisung klappen, mein Problem sind aber meherer Anweisung ohne, dass sie sich in die Quere kommen.

Wie meinst du das mit dem Trennzeichen?
siehe post von Jens
Ok, danke das funktionert sehr gut. Und ist deutlich übersichtlicher.

Eine Frage hätte ich noch. Wie kann ich nun die 3 Arrays zu einem machen. Also ich müsste doch dann die Arrays in ein weiteres Array einfügen, aber das müsste ich doch voher erstmal initialisieren. Die Strings werden nicht gleichzeitgeschrieben, sondern können vom benutzer entschieden werden, wann er welchen braucht.
Du kannst ein 2D-Array initialisieren und dann bei Bedarf die vorher zu wählende Zeile ersetzen. Dann solltest du alles haben, was du brauchst


Gruß, Marko
Meinst du das so

[attachment=43309]

Also zumindest werden nun die Arrays in die richtigen Zeilen eingetragen. Was fehlt, dass die Werte bestehen bleiben, falls ich meine Auswahl ändere. Die anderen Werte sollen sich nicht verändert.

Edit: Ok mit den Schieberegistern habe ich es nun geschafte (siehe Ausschnitt), dass sich zu einem bestimmten Moment alle 3 Arrays in dem Array aufhalten, doch irgendwie sitzt da noch der Wurm drinne, denn dieser Vorgang wird ja nun x-mal wiederholt, womit wenn ich z.b. den ersten eintrag auswähle, mein Array mit diesen Einträgen überschwemmt wird.
Dein Attachment ist leider nicht zu sehen, jedenfalls bei mir
Da steht nur [attachment=43307]
Ich würde das 2D-Array initialisieren und über ein Schieberegister durch eine Schleife geben. Wenn du dann die Auswahl änderst, dann ersetzt du die entsprechende Zeile und übergibst dein 2D-Array wieder ans Schieberegister. Das ganze dann sinnvoller Weise über eine Eventstruktur - da kannst du dann auch gleich deine Auswahländerung abgreifen und ggf. als Arrayindex verwenden.


Gruß, Marko
Ja, ungefäir so, aber du kannst ja mal ne Sonde an dein I-Anschluss der Schleife setzen. Dann siehst du, dass das recht flott geht. Also Eventstruktur oder mindestens ein Wait reinSmile

Und brauchst du wirklich float-Werte?


Gruß, marko
Nein float brauche ich nicht unbedingt. Ich habe einfach immer mit rechtsklick eine Konstante erstellt und das kam dabei raus. Ist das den schlimm?

Bei der Eventstruktur, dann wäre es doch besser wenn ich wieder normale Buttons mache, oder? Bleibe ich bei dem enum kann ich ja nur das Event "Werteänderung" auswählen, dabei unterscheide ich ja noch nicht zwischen der eigentlich Auswahl.
Ich bin noch etwas unerfahren mit Eventstrukturen.

Was meinst du mit Sonde?

Aber ich danke für schon mal für deine bisherige Hilfe


gruß Atilla
Seiten: 1 2
Referenz-URLs