![]() |
Bearbeiten von Array-Elementen ohne Entfernen&Einfügen - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Bearbeiten von Array-Elementen ohne Entfernen&Einfügen (/Thread-Bearbeiten-von-Array-Elementen-ohne-Entfernen-Einfuegen) |
Bearbeiten von Array-Elementen ohne Entfernen&Einfügen - astraios_ - 18.04.2006 10:19 Hallo, ich hab mal wieder ein kleines Anfängerproblem: Ich habe ein Array zum nach ID sortierten Speichern von CAN-Nachrichten. Es handelt sich um ein 1D-Array aus Clustern mit je drei Elementen (siehe Bild). Eines dieser Elemente ist wieder ein Array aus Clustern - die eigentlichen CAN-Nachrichten. Mein Problem: Wenn eine neue Nachricht eingeht, möchte ich sie entsprechend ihrer ID in das Array einfügen. Der Index ist bereits bekannt. Momentan entferne ich den entsprechenden Eintrag im Array, ändere dieses Element entsprechend ab, indem ich ihm die Nachricht anhänge und füge dieses Element dann wieder in das Nachrichten Array an der Stelle Index ein. Das ganze ist leider etwas langsam, da dieser Vorgang wieder über 1000 mal pro Sekunde erfolgt. Gibt es eine Möglichkeit, ein Array Element so zu bearbeiten, ohne es zu entfernen und danach wieder einzufügen? Vielen Dank schonmal im Voraus! Robert Bearbeiten von Array-Elementen ohne Entfernen&Einfügen - Lucki - 18.04.2006 11:16 Links "Array indizieren" und rechts "Teilarray ersetzen" verwenden. Bearbeiten von Array-Elementen ohne Entfernen&Einfügen - astraios_ - 18.04.2006 11:51 Danke für die schnelle Antwort. Das ist tatsächlich eine elegantere Lösung ![]() Leider wird die Sache trotzdem nicht besser... es wird ja immernoch das gesamte Element quasi kopiert und an der entsprechenden Stelle wieder neu eingesetzt. Gibt es nicht irgend eine Möglichkeit, direkt mit der Referenz auf dieses Element zu arbeiten? Oder läuft das mit Indizieren und Ersetzen bereits so ab? Bearbeiten von Array-Elementen ohne Entfernen&Einfügen - Lucki - 18.04.2006 12:03 Daß es nicht scheller wird, kann daran liegen, daß Du ja eine neue Nachricht einfügst, das betreffende Element wird größer, und damit verbunden ist eine Reorganisation des Speicherplatztes für das gesamte Array. Besser wäre, wenn Du die neue Nachricht nicht einfügst, sondern ersetzt. D.h der ursprüngliche Cluster müßte schon irgendein blabla der gleichen Bytezahl enthalten wie die neue Nachricht. Aber ich denke auch so wie Du, daß es da noch irgend etwas anderes geben könnte, so ewas, was vergleichbar wäre mit dem "Assembler Code" für zeitkritische Programmteile. Ich bin aber nur ein einfacher Hardware-Handwerker, dem diese höheren Weihen der Programmerkunst verschlossen sind. Aber vielleicht kann Dir jemand anderes hier helfen. Bearbeiten von Array-Elementen ohne Entfernen&Einfügen - eg - 18.04.2006 12:20 Ich würde da die Benutzung von Queues vorschlagen. Gruss, Eugen |