Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#7

Re: reNamed: Umrechnungsprobleme bei Zeitanzeige von Soundda

  Alt 28. Okt 2003, 13:28
Du hast doch nicht überall die 1000 geändert?
Der Faktor von 1000 ist schon richtig, nur das der Timer öffters die Position abfragen sollte.
Ein Timer mit 1 Sekunde Interval läuft erfahrungsgemäß nicht genau 1 Sekunde, so das ab und zu mal eine untergeht. Es ist schwer zwei Timer (Timer1 und MediaPlayer1) zu syncronisieren, so das sie gleich laufen.

Delphi-Quellcode:
{Timer1.Interval := 300;}
{TrackBar1.Max := MediaPlayer1.Length div 1000;}

Procedure TForm1.Timer1Timer(Sender: TObject);
  Begin
    (* TrackBar-Position an die MediaPlayer-Position anpassen *)
    TrackBar1.Position := MediaPlayer1.Position div 1000;
  End;

Procedure TForm1.TrackBar1Change(Sender: TObject);
  Var TBP, MPP: Integer;

  Begin
    TBP := TrackBar1.Position;
    MPP := MediaPlayer1.Position div 1000;
    (* MediaPlayer-Position an die TrackBar-Position anpassen, *
     * wenn der Unterschied grösser als 2 Sekunden ist         *)

    If ABS(TBP - MPP) > 2 Then MediaPlayer1.Position := TBP * 1000;
  End;
Hoffe dich stört es nicht, das hier alles abgerundet (DIV) wird, ist halt die einfachste und schnellste Methode.

In TrackBar1Change wird der neue Wert nur bei grösseren Änderungen übernommen, so das nicht bei jeder Änderung von TrackBar1.Position der "Film" ins stocken kommt.
Man könnte aber auch abfragen ob TrackBar1.Position im Timer1-Ereignis (Timer1Timer) gesetzt wurde, um in diesem Fall MediaPlayer1.Position nicht zu ändern. (der Aufwand dafür das lohnt sich aber nicht)

Der Umrechnungsfaktor von 1000 stimmt nur, wenn MediaPlayer1.TimeFormat = tfMilliseconds ist. (das ist der Standard)
Bei MediaPlayer1.TimeFormat = tfHMS ist
Stunden = MediaPlayer1.Position and $FF,
Minuten = (MediaPlayer1.Position shr 8 ) and $FF,
Sekunden = (MediaPlayer1.Position shr 16) and $FF.
Die OH sagt jedoch:
Zitat:
Die möglichen Formate werden nicht von allen Multimedia-Geräten unterstützt.
tfMilliseconds wird, so weit ich weis, von allen Geräten unterstützt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat