LabVIEWForum.de - Datenpaare in einer Tabelle ändern.

LabVIEWForum.de

Normale Version: Datenpaare in einer Tabelle ändern.
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen

Ich habe folgendes Problem.

Wie kann ich in einem Array eine Zahl ändern die ich dort eingetragen habe.

Mein Arrey ist ein 1D Arrey und sieht so aus

1 2 3 10 20 30 4 4 4 6 6 6

so nun möchte ich aus der 20 eine 15 machen.

Bitte vieleicht kann mir helfen
Danke im Vorraus

Hatsch

Lv71_img
Hallo Hatsch,

wozu gibt es die ReplaceArrayElement-Funktion?
[attachment=25800]
Im Beispiel erweitert durch das Suchen nach der 20. Beachte bitte, dass bei Verwendung von FloatingPoint-Zahlen das Vergleichen per "=" (wie er auch von der SearchArray-Funktion verwendet wird) so seine Tücken hat (aufgrund begrenzter Genauigkeit der Zahlenformate)!

-Kann es sein, dass in deiner FOR-Schleife sowohl auf das Terminal als auch auf die lokale Variable "Schrittweite" zugegriffen wird? Falls ja: warum nicht einfach einen Draht statt der lokalen Variablen verwenden?
-Wieso führst du "Anzahl der Schritte" in der FOR-Loop auf ein Shiftregister, das du in der Schleife nicht weiter verwendest? Du könntest doch auch hier einfach den Draht schon vor der FOR-Loop verzweigen...
In LV entspricht ein Draht einer Variablen in text-basierten Programmiersprachen. Ein Zugriff auf die gleiche "Variable" erfolgt durch Verzweigen des Drahtes!

Was hat außerdem der Titel deines Posts mit dem Inhalt zu tun? Wo geht es hier um "Datenpaare"?
Sorry das es so llange gedauert hat. Aber war Geschäftlich unterwegs.

Danke für die schnelle antwort.
Ja die Überschrift ist vieleicht ein bischen schlecht gewält.

Ich habe deinen Tipp auch schon umgesetzt aber nun ist ein neues Problem aufgetreten und zwar kann ich das Array genau einmal änder. Mir ist dabei aufgefallen das er immer das ursprüngliche Array nimmt und es da drin ändert.
Wie kann ich jetzt sagen das er nicht das ursprüngliche Array nehmen soll sonder schon das geänderte. Ich habe mir da schon einige lösungen überlegt aber immer kam der Fehler:Diese Verbindung führt zu einem ungerichteten Tunnel. Oder Die Verbindung ist Teil eines Kreises.
Ich weiß nicht mehr weiter vieleicht habt Ihr noch eine Lösung. Help

mfg

Hatsch

Lv71_img

[attachment=25893]
Hallo Hatsch,

hast du schon mal was von ShiftRegistern (Schieberegister) gehört?Smile

Da du noch LV7.1 benutzt, musst du den betreffenden Code-Abschnitt in eine (While-)Schleife packen, dann per Rechtsklick auf den Rahmen ein Shiftregister erstellen und dieses verwenden, wenn du mehrere Werte nacheinander ändern willst...

In deinem Bild ist nicht ersichtlich, wo du das Array mehrfach ändern willst, da du keine entsprechende Schleife zeigst/benutzt. Du erzeugst ein Array (links oben), das Array wird bearbeitet (links unten) und dann in eine Tabelle geschrieben (rechts unten). Wo und wie willst du jetzt mehr als einmal was ändern?
Häng doch bitte auch mal das VI an, dann muss man nicht alles nachprogrammieren...
Danke für die Antwort.

Ja ich möchte mehrere Einträge Ändern aber nicht gleichzeitig sonder nacheinander. Es soll nachher so sein das ich ein Wertenpaar ändere die möglichkeit habe die Tabelle noch mal durchzuschauen und dann das nächste Paar änder ohne das sich das erste geänderte Paar gleich wieder in den Ursprungswert ändert so wie es jetzt ist.

Ich kann es nur so sagen. Es soll das Array das erstellt wird an mehreren Stellen dauerhaft geändert werden undzwar nacheinander.

Das VI habe ich diesmal auch eingestellt ich Hoffe es bringt was.

Danke im vorraus.


Lv71_img
Hallo Hatsch,

erstmal: mit immer mehr lokalen Variablen ist dir auch nicht geholfen... (Siehe Attachment, ohne locals, mit Shiftregister).

Was dir noch fehlt, ist ein genauerer Ablaufplan. Hast du den schon mal für deine Routine auf ein Blatt Papier gemalt?
Dann würdest du feststellen, dass du beim "Ändern" nicht immer wieder den Rest der Tabelle neu generieren dürftest (so wie es bisher geschieht)!

Also: WENN "Ändern" DANN Nicht(Neuerstellen) !

Hinweis zur Lösung:
Die Reihenfolge deiner Case-Strukturen ist verkehrt. Du müsstest erst unterscheiden, ob "Ändern" oder "Übernehmen" und, abhängig von dieser Unterscheidung, Daten neu erstellen oder alte Daten bearbeiten. Zum "alte Daten bearbeiten" benötigst du natürlich ein Shiftregister, welches dir die "alten" Daten des vorigen Durchlaufs bereitstellt.

Noch ein Hinweis:
Schleifen laufen nicht unbedingt schneller, nur weil keine Wartefunktion eingebaut ist... Bei UI-Geschichten kannst du immer mindestens 100ms Wartezeit einbauen - so schnell kann keiner klicken...
Lv71_img
Referenz-URLs