Einzelnen Beitrag anzeigen

DGS

Registriert seit: 10. Jul 2004
65 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Array timer, stringgrid hilft mir

  Alt 2. Dez 2007, 12:39
Ich werde dir ned die Aufgabe machen, sondern dir mal paar Tipps geben, damit du auch selbst siehst, wie man es macht:

Als erstes, jede Sekunde ein Messwert ->
du brauchst einen Timer. stelle Intervall auf 1sekunde ( = 1000 ms )
Im OnTimer ereignis wirst jetzt eine Funktion schreiben.

Schauen wir uns dann mal die Beschränkung auf 60 Einträge an.
Die werden zyklisch geschrieben.
d.h. du brauchst ne globale Variable, die dir sagt, in welche Zelle du schreiben kannst. Wir nehmen am besten dazu Index der Zelle. d.h. wir intialisieren im onCreate diese Variable mit 1. Nennen wir sie J.

Jedesmal, wenn du Datensatz schreibst ( also im OnTimerEvent ), musst halt folgende Dinge machen:
Datensatz generieren
Datensatz in Tabelle schreiben, dabei achten, ob Zeilen genug.
J inkrementieren und auf Grenze "60" achten.
Min/Max/Durchscnitt beachten

Punkt Datensatz generieren.
Der Zufallsgenerator muss zwischen -15,00 und -25,00 was berechnen. zwei Stellen genau.
d.h. du brauchst ein random(1000).
Genauer gesagt ist deine Temperatur: random(1000)/100-25;

In Tabelle schreiben dürfte ned schwer werden. Schaust halt, ob J>= Stringgrid.rowcount. Falls ja, fügst neue Zeile hinzu.

J inkrementieren...
... J := J+1 oder Inc(J);
Die 60er Grenze muss beachtet werden. Da wir bei 1 anfangen ist letzter gültige Wert die 60.
Machst einfach ne Zeile rein:
if J > 60 then J := J -60;

Min/Max/Durchschnitt
Gehst am besten jedesmal alle 60 Zeilen durc, dabei zwei variablen, die sich max/min wert merken.
auf dritte summierst alle Werte und teilst am Ende durch 60.


Nun aufnahme starten/stoppen.
Einfach Timer.Enabled := true/false;

Hoffe, du hats Vorstellung bekommen, was und wie du programmieren solltest.
Vorschläge für sinnvolle Signatur bitter per PN
  Mit Zitat antworten Zitat