Einzelnen Beitrag anzeigen

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