Probel mit Timer
Der Timer spinnt igendwie... Ich hab schon alle Kombinationen ausprobiert, aber der zählt immer nur "0".
Hier der Source:
Delphi-Quellcode:
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. :wall: :gruebel:
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. |
Re: Probel mit Timer
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 |
Re: Probel mit Timer
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 |
Re: Probel mit Timer
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:
So brauchst den Timer gar nicht.
...
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' ; ... |
Re: Probel mit Timer
Um Zeitmessungen durchzuführen, kannst du es mal mit folgender Procedure versuchen.
Delphi-Quellcode:
Tschüß Markus
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; |
Re: Probel mit Timer
Ist die GetTickCount Funktion bei Zeitmessungen nicht zu ungenau? :gruebel:
|
Re: Probel mit Timer
WOW...Vielen Dank, ging ja schnell ab hier :-D
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) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:11 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