Der Teil mit dem hochrechnen der Minuten/Stunden stimmt so, ist jedenfalls kein fehler drin.
Ich lösse das jedoch so, falls mal Sekunden grosser als 60 ist:
Delphi-Quellcode:
If Sekunden >= 60 Then Begin
Inc(Minuten, Sekunden div 60);
Sekunden := Sekunden mod 60;
End;
If Minuten >= 60 Then Begin
Inc(Stunden, Minuten div 60);
Minuten := Minuten mod 60;
End;
Inc(X, Y); entspricht
X := X + Y;
So kann man auch mal grössere Werte für Sekunden behandeln
(z.B.: 400 Sekunden = 6 Minuten, 40 Sekunden)
Bei
Sekunden := Mediaplayer1.Position
musst du aber aufpassen.
Mediaplayer1.Position wird nach dem in Mediaplayer1.TimeFormat festgelegten Format codiert.
TimeFormat/Position kann folgende Formate verwenden (siehe
OH TMPTimeFormats):
Delphi-Quellcode:
{TimeFormat = } {Position = }
tfMilliseconds Millisekunden: Integer
tfHMS Stunden, Minuten, Sekunden: Byte ($xxSSMMHH = Integer)
tfMSF Minuten, Sekunden, Frames: Byte ($xxFFSSMM = Integer)
tfFrames Frames: Integer
tfSMPTE24 Stunden, Minuten, Sekunden, Frames: Byte ($FFSSMMHH = Integer)
tfSMPTE25 {wie tfSMPTE24}
tfSMPTE30 {wie tfSMPTE24}
tfSMPTE30Drop {wie tfSMPTE24}
tfTMSF Spuren, Minuten, Sekunden, Frames: Byte ($FFSSMMTT = Integer)
{ F = Frames }
{ S = Sekunden }
{ M = Minuten }
{ H = Strunden }
{ T = Spuren }
{ Frames = Einzelbilder }
Versuch mal nach dem laden der Mediendatei TimeFormat zu setzen:
MediaPlayer1.TimeFormat := tfMilliseconds;
Und die Sekunden so zu berechnen:
Delphi-Quellcode:
Sekunden := Mediaplayer1.Position div 1000;
{oder}
Sekunden := Round(Mediaplayer1.Position / 1000);
Mediaplayer1.Position := Sekunden * 1000;