Array - Werte schieben

mf2000

Level-1
Beiträge
146
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich möchte in einem Array Werte speicher, was ich auch hin bekomme.

Aber ich möchte das der neue Wert immer an Pos. 0 steht und die anderen Werte entsprechend aufrücken.
Das könnte ich mit einer Schleife machen, erst alle Werte verschieben und dann den neuen Wert einfügen.
Aber das geht bestimmt besser oder?

Siehe Bilder.

Bitte wenn möglich ein Beispiel.

Danke.
 

Anhänge

  • 2.png
    2.png
    3,2 KB · Aufrufe: 98
  • 1.png
    1.png
    18,2 KB · Aufrufe: 118
Klingt als möchtest du einen FIFO Speicher realisieren, in der Oscat Basic Bibliothek sind die Funktionen FIFO_16 & FIFO_32 dazu enthalten:

oscat.de

Grundsätzlich liegst du aber richtig, erst alle Werte nach unten schieben, dann den neuen Wert in das erste Element kopieren. Das letzte Element deines Arrays landet im Nirvana.
 
Zuletzt bearbeitet:
Dein Array ist noch recht klein, bei großen Datenbereichen ist es deutlich performanter wenn du das mit MemMove machst und den kompletten Bereich nach hinten schiebst.

MemMove(Array[0], Array[1], SIZEOF(ArrayElement) * (MAX_ELEMENTS - 1) );


Ich weiß gerade nicht mehr ob zuerst die Quelle dann das Ziel kommt oder umgekehrt (==>Doku lesen)

Geht deutlich zackiger als mit einer Schleife.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich würde dir empfehlen, bei einem etwas größeren FIFO (oder mehreren paralell) das FIFO Prinzip über Board zu werfen, da die ganzen Schleifen sich je nach Steuerung erheblich auf die Zykluszeit auswirken ... mach dir doch lieber einen Array und einen "Merker" welcher Eintrag als nächstes beschrieben (und optional welcher davon als letztes bearbeitet wurde) wird. Das gute FiFo Prinzip ist meinen Augen nur eine Schönheitskur, damit der Programmierer auf Kosten der Hardware nicht scrollen muss :D

ist vorallem besser wenn die Daten weiterverarbeitet werden müssen ... mit einem einfachen FiFo hast du keine Möglichkeit einen Überlauf/Überschreiben einfach zu verhindern
 
Zurück
Oben