AGB  ·  Datenschutz  ·  Impressum  







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

Probleme mit Timer bzw. Zeit-Anzeige

Ein Thema von bingo72 · begonnen am 16. Nov 2006 · letzter Beitrag vom 16. Nov 2006
Antwort Antwort
bingo72

Registriert seit: 18. Aug 2006
Ort: Österreich
180 Beiträge
 
Delphi 5 Professional
 
#1

Probleme mit Timer bzw. Zeit-Anzeige

  Alt 16. Nov 2006, 09:01
Hallo Delphi-Kollegen!!

Ich brauche eine zuverlässige Methode, um Zeiten in einem Intervall von 100 ms zu messen. Diese Zeiten werden gemeinsam mit anderen Daten gespeichert und später für die Wiedergabe wieder eingelesen und angezeigt.
Soweit so gut...
Jetzt hab ich das Ganze mal so gemacht:

Delphi-Quellcode:
(* Pro Intervall (100ms) wird die momentane Wiedergabezeit gesetzt *)
procedure TfmMain.tiPlayTimer(Sender: TObject);
var
  lPlayTime : TDateTime;
begin
  inc(fTimerCounter); //globale Zählervariable die hochgezählt wird, bis eine volle Sekunde erreicht wurde
  if (fTimerCounter MOD 10 = 0) then begin
    (* Momentane Wiedergabezeit während des Abspielens ermitteln und in der Form anzeigen *)
    lPlayTime := GetPlayDataInstance.GetCurrTimeInDateTime;
    lbCaptureTimeData.Caption := FormatDateTime('hh:nn:ss', lPlayTime);
    (* Wenn momentane Wiedergabezeit die Gesamtvideodauer erreicht --> Abbruch
    und zur Preview zurückkehren *)

    if (GetPlayDataInstance.GetCurrVideoPosAsInt64 >=
        GetPlayDataInstance.GetVideoDuration(videoRenderer_great)) then begin
      self.StopPlayingStartPreview;
      fTimerCounter := 0;
    end;
  end;
end;
In der GetCurrTimeInDateTime wird die Differenz aus einen Startwert (TDateTime mittels Now) und einem aktuellen Wert (ebenfalls TDateTime mittels Now) errechnet und zurückgegeben.

Das Ganze funktioniert soweit auf den ersten Blick auch ganz gut....
Wenn man die Werte wiedergibt merkt man, daß er immer wieder Sekunden bei der Wiedergabezeit ausläßt. Z.b. springt er von Sekunde 10 gleich auf Sekunde 12. Dasselbe passiert bei den Sekunden 23, 34, 46 sowie 58.
Jetzt hab ich schon öfters gelesen, daß der Timer nur mit einer geringeren Priorität ausgeführt wird und ich vermute mal, daß dies auch damit zusammenhängt...

Hatte wer schon mal so ein Problem und wie läßt es sich lösen??? Bin über jeden guten Tipp sehr dankbar, weil ich schön langsam nicht mehr weiter weiß??!!

LG
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#2

Re: Probleme mit Timer bzw. Zeit-Anzeige

  Alt 16. Nov 2006, 09:17
Hi,

vlt. hilft ja MSDN-Library durchsuchenQueryPerformanceCounter, MSDN-Library durchsuchenQueryPerformanceFrequency weiter!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
bingo72

Registriert seit: 18. Aug 2006
Ort: Österreich
180 Beiträge
 
Delphi 5 Professional
 
#3

Re: Probleme mit Timer bzw. Zeit-Anzeige

  Alt 16. Nov 2006, 09:22
Wenn ich die Zeilen...

Delphi-Quellcode:
inc(fTimerCounter); //globale Zählervariable die hochgezählt wird, bis eine volle Sekunde erreicht wurde
  if (fTimerCounter MOD 10 = 0) then begin
  end;
...weglasse, funktioniert es reibungslos!!??
  Mit Zitat antworten Zitat
cu mic

Registriert seit: 2. Mai 2006
13 Beiträge
 
#4

Re: Probleme mit Timer bzw. Zeit-Anzeige

  Alt 16. Nov 2006, 10:27
Ich tippe darauf, dass du "zuviel" zwischendurch tust und die Messages nicht zeitgemäß abgearbeitet werden können.

procedure TForm1.Timer1Timer(Sender: TObject);
begin
inc(aktuell);
if (aktuell mod 10=0)
then Edit1.Text := TimeToStr(now-start);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
start := now;
end;

procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
begin
for i:=0 to 100 do
begin
sleep(100);
// Application.ProcessMessages;
end;
end;

Aber nur eine Vermmutung, denn bei mir läuft es einwandfrei sekundengenau.
  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:21 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