Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi TMediaPlayer: tfMilliseconds in [min : sek : ms] aufteilen (https://www.delphipraxis.net/27313-tmediaplayer-tfmilliseconds-%5Bmin-sek-ms%5D-aufteilen.html)

Firefoxx 7. Aug 2004 20:44


TMediaPlayer: tfMilliseconds in [min : sek : ms] aufteilen
 
Hallo!

Hat einer von euch einen Tipp, wie ich möglichst einfach die Restspieldauer einer Datei aus dem MediaPlayer anzeigen lassen kann?

Im Moment ist mein MediaPlayer auf

TimeFormat = tfMilliseconds

eingestellt.
Jetzt würde ich gerne ein Label o.ä. haben, in dem z.B. steht:

'Restspielzeit (min:sek:ms) - 02:13:425'

Jetzt ist meine Frage: Wie kann ich mit möglichst einfachem, pfiffigen Code aus den Millisekunden (meinetwegen auch aus den Frames oder Samples) die Restzeit anzeigen lassen, die auf Minuten, Sekunden und Millisekunden aufgeteilt wird? Vielleicht mit einem Record, in das die Zeit reingeschossen wird? Bräuchte mal ein paar konstruktive Ideen.

Vielen Dank,
Firefoxx

Meflin 7. Aug 2004 20:57

Re: TMediaPlayer: tfMilliseconds in [min : sek : ms] aufteil
 
da es schon etwas später ist (und cih gestern nacht nicht im bett war) keine garantie ob da jetzt ein denkfehler drin ist:
du nimmst die ms und teilst sie mod 1000. dann hast du die rest 1000el
dann nimmst du die ms und teilst sie durch tausend. dann hast dus in sekunden
dann teilst du die sekunden mod 60 und hast die rest sekunden
dann teilst du die sekunden durch 60 und hast die minuten
so sollte das eigentlich funzen
falls du mod nicht kennen solltest: mod ist die teilung mit rest. näheres dazu auch unter Delphi-Referenz durchsuchenmod

Union 7. Aug 2004 21:03

Re: TMediaPlayer: tfMilliseconds in [min : sek : ms] aufteil
 
Zitat:

Zitat von Firefoxx
Hallo!
jetzt ist meine Frage: Wie kann ich mit möglichst einfachem, pfiffigen Code aus den Millisekunden (meinetwegen auch aus den Frames oder Samples) die Restzeit anzeigen lassen, die auf Minuten, Sekunden und Millisekunden aufgeteilt wird? Vielleicht mit einem Record, in das die Zeit reingeschossen wird? Bräuchte mal ein paar konstruktive Ideen.

Code:
// TDateTime sind float mit 1 pro Tag. Also musst Du um auf eine ms zu kommen
// rechnen Tag := ms/(msprosekunde*sekundeprominute*minuteprostunde*stundenprotag
//      => Tag := ms/(1000*60*60*24) = 86400000
const MilliSecondsPerDay : integer = 86400000;
var
   Time : TDateTime;
   Hour, Min, Sec, MSec : Word;
   iMilliSecs : double;
begin
   // Deine ms, z.B. 2000
   iMilliSecs := 2000;
   // In Tage umrechnen
   Time := iMilliSecs/MilliSecondsPerday;
   // Splitten
   DecodeTime(Time, Hour, Min, Sec, mSec);
   // ausgeben
   ShowMessage(Format('Laufzeit: %2.2d:%2.2d:%2.2d.%3.3d', [Hour, Min, Sec, mSec]));
end;

Mirilin 7. Aug 2004 21:03

Re: TMediaPlayer: tfMilliseconds in [min : sek : ms] aufteil
 
:hi:
TMediaPlayer + F1 -> Length -> Beispiel
hilft Dir vielleicht (ist aber Stunden, Minuten, Sekunden)


mfg Tobias

Union 7. Aug 2004 21:10

Re: TMediaPlayer: tfMilliseconds in [min : sek : ms] aufteil
 
Zitat:

Zitat von Mirilin
:hi:
TMediaPlayer + F1 -> Length -> Beispiel
hilft Dir vielleicht (ist aber Stunden, Minuten, Sekunden)

Da steht aber auch, dass dieses Format nicht von allen Treibern unterstützt wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz