AGB  ·  Datenschutz  ·  Impressum  







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

Probel mit Timer

Ein Thema von LoW_FloW · begonnen am 21. Feb 2004 · letzter Beitrag vom 21. Feb 2004
Antwort Antwort
Benutzerbild von LoW_FloW
LoW_FloW

Registriert seit: 29. Nov 2003
117 Beiträge
 
Delphi 7 Professional
 
#1

Probel mit Timer

  Alt 21. Feb 2004, 14:25
Der Timer spinnt igendwie... Ich hab schon alle Kombinationen ausprobiert, aber der zählt immer nur "0".
Hier der Source:
Delphi-Quellcode:
unit uBench;

interface

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

type
  TForm1 = class(TForm)
    Start: TButton;
    FigurListe: TImageList;
    Image1: TImage;
    Label1: TLabel;
    Timer1: TTimer;
    procedure StartClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Bild : TBitmap ;
  BildName : string ;
  Punkte : integer ;
  Zeit : integer ;
  
implementation

{$R *.dfm}

procedure TForm1.StartClick(Sender: TObject);
var
i : integer ;
begin
for i := 1 to 2 do
  begin
  Bild.LoadFromFile(ExtractFilePath(Application.Exename)+IntToStr(i)+'.bmp');
  Bild.Width := 1612 ;
  Bild.Height := 1081 ;
  FigurListe.Width := 1612 ;
  FigurListe.Height := 1081 ;
  FigurListe.Masked := false ;
  FigurListe.Add(Bild, nil)
  end;
Timer1.Enabled := true ;
for i := 1 to 50 do
  begin
  FigurListe.GetBitmap(0, Image1.Picture.Bitmap) ;
  repaint ;
  FigurListe.GetBitmap(1, Image1.Picture.Bitmap) ;
  repaint ;
  end;
Timer1.Enabled := false ;
Label1.Caption := IntToStr(Zeit) ;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FigurListe.Free ;
Bild.Free ;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
FigurListe := TImageList.Create(self);
Bild := TBitmap.Create ;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Zeit := Zeit + 1 ;
end;

end.
Es soll zunächst 2 Bilder in die ImageList geladen werden, die dann abwechselnd angezeigt werden (50 mal). Die Zeit während der Anzeige der 50 Bilder soll gemessen und dargestellt werden (Label1.Caption := IntToStr(Zeit)). Nur ist die Caption von Label1 "0", was ich überhaupt nicht verstehe.
  Mit Zitat antworten Zitat
Markus K.

Registriert seit: 26. Jan 2004
Ort: Halle
346 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Probel mit Timer

  Alt 21. Feb 2004, 14:41
Hallo LoW_FloW,
wie mist du eigentlich die Zeit? Kann man eigentlich mit dem Timer eine Zeit messen? Eigentlich führt der Timer nach einem bestimmten Intervall ein Ereignis aus.

Tschüß Markus
  Mit Zitat antworten Zitat
Ratte

Registriert seit: 12. Dez 2003
Ort: Erfurt
345 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Probel mit Timer

  Alt 21. Feb 2004, 14:54
Hi LoW_FloW,

könnte es sein das du einen Intervall gewählt hast der länger ist als das zeichnen dauert? Dann würde der Timer ausgeschaltet bevor er überhaubt einmal hochgezählt hat.

Ratte
Schiffsratte der U.S.S. Delphipraxis, Laderaum 4538
BUSH:= TTerminator.create;
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Probel mit Timer

  Alt 21. Feb 2004, 15:01
Hallo LoW_FloW,
anstatt mit Hilfe eines Timers könnte Du auch diue API-Funktion GetTickCount verwenden.
GetTickCount liefert die Anzahl der verstrichenen Millisekunden seit dem Start.
Beipspiel:
Delphi-Quellcode:
...
  var
    StartTime : DWord;
...
  StartTime:=GetTickCount;
  for i := 1 to 50 do
    begin
    FigurListe.GetBitmap(0, Image1.Picture.Bitmap) ;
    repaint ;
    FigurListe.GetBitmap(1, Image1.Picture.Bitmap) ;
    repaint ;
    end;
  Label1.Caption := IntToStr(GetTickCount-StartTime)+' MilliSekunden' ;
...
So brauchst den Timer gar nicht.
  Mit Zitat antworten Zitat
Markus K.

Registriert seit: 26. Jan 2004
Ort: Halle
346 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Probel mit Timer

  Alt 21. Feb 2004, 15:05
Um Zeitmessungen durchzuführen, kannst du es mal mit folgender Procedure versuchen.

Delphi-Quellcode:
var c,zeit1,zeit2:TLargeInteger;
begin
     QueryPerformanceFrequency(c);
     QueryPerformanceCounter(Zeit1);
     
     {zumessende Procedure oder Funktion einfügen}

     QueryPerformanceCounter(Zeit2);
     Label1.Caption:=Format('Zeit: %g',[(Zeit2-Zeit1)/c]);

end;
Tschüß Markus
  Mit Zitat antworten Zitat
Markus K.

Registriert seit: 26. Jan 2004
Ort: Halle
346 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Probel mit Timer

  Alt 21. Feb 2004, 15:07
Ist die GetTickCount Funktion bei Zeitmessungen nicht zu ungenau?
  Mit Zitat antworten Zitat
Benutzerbild von LoW_FloW
LoW_FloW

Registriert seit: 29. Nov 2003
117 Beiträge
 
Delphi 7 Professional
 
#7

Re: Probel mit Timer

  Alt 21. Feb 2004, 16:52
WOW...Vielen Dank, ging ja schnell ab hier
Ich habs jetzt mal mit der GetTickCount-Funktion von Jens Schumann gemacht. Klappt bestens.
Nach der Genauigkeit gucke ich nochmal, ansonsten nehme ich die Möglichkeit von Markus K.. VIelen dank nochmal an euch 2 und auch an die anderen!!!
Acho nochwas...das Interval war 1 8)
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:33 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