Einzelnen Beitrag anzeigen

BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#1

Werte in Array verschieben, funktioniert nicht richtig

  Alt 12. Aug 2009, 08:39
Hallo und guten Morgen,

Hab da ein kleines Problem mit meiner eigenen Logik. Also ich habe ein Array mit Werten drin. Es kommen periodisch neue Werte hinzu (diese packe ich auf die letzte Stelle). Dafür soll der erste Wert es Arrays verschwinden. Habe das so programmiert (und denke ich hab irgendwie einen ziemlich simplen Fehler eingebaut, den ich aber irgendwie nicht sehe).

Hier mal die 2 Proceduren, die ich dafür verwende:

Delphi-Quellcode:
procedure TOszilloskopKanal.movedArray(temparray: array of double);
var i: integer;
begin
  // Das Array wird durchlaufen und es wird immer der Nachfolger auf den Vorgänger gesetzt.
  for i := 0 to Length(temparray)-2 do temparray[i] := temparray[i+1];
end;

// Es werden immer nur die letzen Werte gesetzt
procedure TOszilloskopKanal.SetYWert(dWert: double);
begin
  // Wenn ein Wert im Eingang reinkommt, werden zuerst
  // die Werte im Array verschoben,
  movedArray(FadyWert);
  // dass letzte Element, was nach dem Verschieben "frei" wird (effektiv sitzt dort immer noch der gleiche Wert drin, wie vor der ArrayWert-Verschiebung, aber dieser wurde ja schon auf das Vorletzte Feld kopiert.
  FadyWert[FiYmax] := dWert; //FiYMax = Maximale Anzahl an Y-Werten
  // Und es wird nach außen signalisiert, dass etwas am Eingang geschehen ist (dies soll für das Zeichnen den Timer sparen und die Performance verbessern)
  doChangeEingang;
end;
Hab das mal versucht so gut es geht zu kommentieren, damit ihr auch meinen Gedankengang verfolgen könnt. Problem ist wie gesagt, der Gedankengang stimmt nicht mit dem Ergebnis überein. Im Ergebnis erhält der vorletzte Array Wert nie den Wert des letzten (also muss etwas in der ArrayWert-Verschiebung wohl fehl gehen).

Vielen Dank
BAMatze
2. Account Sero
  Mit Zitat antworten Zitat