AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Array timer, stringgrid hilft mir

Ein Thema von Feuerwehrmann90 · begonnen am 1. Dez 2007 · letzter Beitrag vom 7. Dez 2007
Antwort Antwort
Seite 5 von 6   « Erste     345 6      
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#41

Re: Array timer, stringgrid hilft mir

  Alt 2. Dez 2007, 19:43
Ich bin nicht off
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Feuerwehrmann90

Registriert seit: 1. Dez 2007
Ort: Wallerfangen
71 Beiträge
 
Delphi 6 Personal
 
#42

Re: Array timer, stringgrid hilft mir

  Alt 2. Dez 2007, 19:51
bei dir hat im profil offline gestnadne kp warum

also my neur quellcode sieht aus aber kp wie weiter

Delphi-Quellcode:
    ED_mittel: TEdit;
    ED_min: TEdit;
    timer: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure timerTimer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  i:integer ;
  max,min,mittel:real;
  grad:array[1..60] of real;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
i:=1;
timer.Enabled:=true;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
timer.Enabled:=false;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
SG_ausgabe.Cells[0,0]:='Nummer';
SG_ausgabe.Cells[1,0]:='Datum/Zeit';
SG_ausgabe.Cells[2,0]:='Grad Celsius';
end;

procedure TForm1.timerTimer(Sender: TObject);
begin
for i:=1 to 60 do
SG_ausgabe.Cells[0,i]:=Inttostr(i);
SG_ausgabe.RowCount:=i;
max:=-15;
min:=-26;
mittel:=0;
ED_mittel.Text:=FloatToStr(mittel);
ED_min.text:=FloatToStr(min);
ED_max.text:=FloatToStr(max);
end;

end.
Mathias
  Mit Zitat antworten Zitat
nat

Registriert seit: 10. Nov 2005
216 Beiträge
 
RAD-Studio 2009 Pro
 
#43

Re: Array timer, stringgrid hilft mir

  Alt 2. Dez 2007, 19:56
Zitat von Feuerwehrmann90:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
i:=1;
timer.Enabled:=true;
for i:=1 to 60 do
SG_ausgabe.Cells[0,i]:=Inttostr(i);
SG_ausgabe.RowCount:=i;
end;
die letzte zeile ergibt nicht so viel sinn (denn sie gehört nicht mehr zur for-schleife).
du weiß ja, dass du zum schluss 61 reihen haben wirst (mit überschrift). dann kannste auch gleich
SG_ausgabe.RowCount := 61; machen (am besten bevor du darauf in der for-schleife zugreifen willst).

der rest sieht doch schonma ganz gut aus.
was dir jetzt noch fehlt ist der ontimer-event der jede sekunde ausgelöst wird und
der kern der aufgabe is. es soll ja jede sekunde ein messwert hinzugefügt werden.

nun erstellst du dir einen globalen array
Messwerte: array[0..59] of Double bzw kannste auch
Messwerte: array[1..60] of Double machen. beide varianten erstellen einen array mit 60 elementen.
bei dem einen beginnt der index für das erste element halt bei 0, bei dem anderen bei 1.

wenn du dir deinen zufallsmesswert geholt hast weist du ihm einfach dem aktuellen array-element zu.
z.B. Messwerte[10] := messwert; wobei sich für die 10 natürlich eine variable
anbietet die mitzählt welches element aktuell ist.
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#44

Re: Array timer, stringgrid hilft mir

  Alt 2. Dez 2007, 20:07
Ich würde es so machen:

Im OnCreate deiner Form:
i := 1; Und im Timer-Event:
Delphi-Quellcode:
if i <= 60 then
begin
   grad[i] := random(1000)/100-25; // neuer messwert
   SG_ausgabe.Cells[0,i]:=inttostr(i);
   SG_ausgabe.Cells[1,i]:=DateTimeToStr(Now);
   SG_ausgabe.Cells[2,i]:=Format('%1.2f Grad Celcius',[grad[i]]);
   inc(i);
end;
Sollte zumindest schon mal die ersten 60 Zeilen füllen (Code ist schnell aus dem Kopf raus getippt, sollte aber funktionieren. Wenn das klappt, dann kannst du dich daran machen, zu überprüfen, wenn du mehr als 60 Werte hast (Min., Max. und Durchschnitts-Wert sind noch nicht mit drin!)

P@Tti
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#45

Re: Array timer, stringgrid hilft mir

  Alt 2. Dez 2007, 20:15
So, hab meinen gerade geposteten Code getestet und es funktioniert (siehe Anhang). Soweit solltest du mit Hilfe des gesamten Threads kommen. Die Werte (min, max, durchschnitt) müsstest du noch selber berechnen und auch die Überschreitung der 60 müsstest du einbauen. Sollte jetzt alles kein großes Problem mehr sein!

P@Tti
Miniaturansicht angehängter Grafiken
grad_192.jpg  
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Feuerwehrmann90

Registriert seit: 1. Dez 2007
Ort: Wallerfangen
71 Beiträge
 
Delphi 6 Personal
 
#46

Re: Array timer, stringgrid hilft mir

  Alt 2. Dez 2007, 20:19
du kp wie ich das mit den arrays soll machen

das is my problem wo cihd en ganz atg schon han
Mathias
  Mit Zitat antworten Zitat
Benutzerbild von Opa
Opa

Registriert seit: 12. Jun 2003
107 Beiträge
 
Delphi 7 Enterprise
 
#47

Re: Array timer, stringgrid hilft mir

  Alt 2. Dez 2007, 21:57
Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, ExtCtrls, StdCtrls;

type
  TTemp = array[1..60] of integer;
  TForm1 = class(TForm)
    SG: TStringGrid;
    EditMin: TEdit;
    EditMax: TEdit;
    EditMittel: TEdit;
    ButtonStart: TButton;
    ButtonStop: TButton;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure ButtonStartClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    Temp     : TTemp;
    MitteWert : integer;
    MaxWert  : integer;
    MinWert  : integer;
    LaufNr   : integer;
    procedure ClearZellen;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation
const
  Beschreibung : array[0..2] of string = ('Nr.:','Datum/Uhrzeit','Messwert');
{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  I : integer;
begin
  Randomize;
  with SG do
  begin
    Align := alTop;
    ColCount := 3;
    RowCount := high(TTemp)+1;
    for I := low(Beschreibung) to high(Beschreibung) do SG.Cells[I,0] :=Beschreibung[I];
    for I := low(TTemp) to high(TTemp) do Temp[I] := 0;
  end;
  Timer1.Enabled := false;
  ButtonStart.OnClick := ButtonStartClick;
  ButtonStop.OnClick := ButtonStartClick;
  ClearZellen;
  ButtonStartClick(self);
end;

procedure TForm1.ButtonStartClick(Sender: TObject);
begin
  Timer1.Enabled := not Timer1.Enabled;// Button1 und zwei gleiche Procedure legen
  if not Timer1.Enabled
  then ClearZellen
  else;
end;
//------------------------------------------------------------------------------

procedure TForm1.Timer1Timer(Sender: TObject);
var
  RMinMax : integer;
  I      : integer;
begin
  with SG do
  begin
    Cells[0,LaufNr] := intToStr(LaufNr);
    Cells[1,LaufNr] := FormatDateTime('dd-mm-yyyy-hh-nn-ss', now);
    RMinMax := Random(10*100)+15*100+1;
    Temp[LaufNr] := RMinMax;
    if MinWert > RMinMax then MinWert :=RMinMax;
    if MaxWert < RMinMax then MaxWert :=RMinMax;
    for I := low(TTemp) to LaufNr do MitteWert := MitteWert + Temp[LaufNr];
    MitteWert := MitteWert div LaufNr;

    Cells[2,LaufNr] := FloatToStr(Temp[LaufNr]/100*(-1));
    EditMittel.Text := FloatToStr(MitteWert/100*(-1));
    EditMax.Text   := FloatToStr(MaxWert/100*(-1));
    EditMin.Text   := FloatToStr(MinWert/100*(-1));

    inc(LaufNr);
//    if LaufNr > 60 then begin LaufNr := 1;MitteWert := 0;end;
    if LaufNr > 60 then ClearZellen;

  end;
end;
//******************************************************************************
procedure TForm1.ClearZellen;
var
  I,J : integer;
begin
  for I := low(TTemp) to High(TTemp) do
    for J := low(Beschreibung) to high(Beschreibung) do
      SG.Cells[J,I]:='';
  LaufNr := 1;
  MitteWert := 0;
  MaxWert  := 0;
  MinWert  := 9999;
end;


end.
Beim Mittelwert kann ich mich verrechnet haben!

20 Min das ganze Ding

Ich muss jetzt das Erste sehen - den Rest nun keine Zeit mehr
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#48

Re: Array timer, stringgrid hilft mir

  Alt 3. Dez 2007, 07:41
Super, hat sich also doch jemand gefunden, der ihm das ganze Programm gemacht hat.

Man muss nur 4 Seiten lang schreiben, dass man was nicht hinkriegt und verzweifelt. Irgendwann machts dann einer, aus was für Gründen auch immer. Muss ich mir merken.
Fazit: Freut mich zwar für den Feuerwehrmann. Aber in der Schule kann er den Source sicher nicht erläutern und der Lerneffekt geht (mal wieder) gegen 0.
  Mit Zitat antworten Zitat
Benutzerbild von Opa
Opa

Registriert seit: 12. Jun 2003
107 Beiträge
 
Delphi 7 Enterprise
 
#49

Re: Array timer, stringgrid hilft mir

  Alt 3. Dez 2007, 11:03
Hättest Du nicht soviel geschrieben hätte ich ihm das Prg. nicht gemacht!

Ich konnte mir "das Elend" nicht mehr antun. Im übrigen muss er das Prg. nicht nehmen.

Es war im übrigen nach 21 Uhr gewesen als ich das gemacht habe und irgendwann muss er auch schlafen. In einen Tag kann man nicht lehren was man wochenlang verpasst hat.

Ich fand im übrigen, dass man auf reale Zahlen verzichten kann. Ist viel zu umständlich. Wie dem auch sei ich verzeihe Dir noch mal. Ich muss auch darüber nachdenken das er mein zukünftiger Rentenzahler sein wird, es nütz mir also nichts, wenn er wegen Faulheit
aus der Schule fliegt.

Mfg
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#50

Re: Array timer, stringgrid hilft mir

  Alt 3. Dez 2007, 12:16
Zitat von Opa:
Hättest Du nicht soviel geschrieben hätte ich ihm das Prg. nicht gemacht!
Hm? Wo hab ich - ausser als erste Antwort - was geschrieben?

Zitat von Opa:
Ich konnte mir "das Elend" nicht mehr antun. Im übrigen muss er das Prg. nicht nehmen.
Ich weiß, das Gefühl hab ich bei paar Fragen auch manchmal. Aber man muß abwägen, ob es demjenigen jetzt was bringt, wenn er Sourcecode sieht (weil manchmal machts ja an Hand von nem praktischen Beispiel erst richtig Klick) oder ob er dann zwar hat was er will, aber daraus nichts lernt.

Zitat von Opa:
Ich fand im übrigen, dass man auf reale Zahlen verzichten kann. Ist viel zu umständlich. Wie dem auch sei ich verzeihe Dir noch mal. Ich muss auch darüber nachdenken das er mein zukünftiger Rentenzahler sein wird, es nütz mir also nichts, wenn er wegen Faulheit aus der Schule fliegt.
Keine Ahnung, ob man das kann. Ich glaub du verwechselst mich grad. Aber das mit dem Rentenzahler is n gutes Argument.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 6   « Erste     345 6      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz