C++ Builder

jackie05

Erfahrenes Mitglied
hi
ich habe eine frage, wie kann ich die aktuelle zeit von MediaPlayer Komponente anzeigen lassen, wenn ich z.B. ein video clip starte dann soll die titel länge angezeigt werden das es dann herunterzählt wenn das Video läuft.

ich danke euch schonmal für die antwort.

MFG Andreas
 
Hallo,

das ist schwierig, aber trotzdem:
Erstelle einen Timer (Interval=100; Name=Timer1)
Erstelle Zwei Label:
1) TrackTime = Länge des clips/songs
2) Position = Aktuelle Zeit

Erstelle das OnTimer Event des Timers:
Code:
{ 
if (MediaPlayer1->Mode != mpNotReady)
Position->Caption = TimeString(MediaPlayer1->Position,MediaPlayer1->TimeFormat);
}

Jetzt füge einfach unten in den Quelltext ein; String für TimeFormat:
Code:
AnsiString TForm1::TimeString(int Time,TMPTimeFormats TimeFormat)
{
char Buffer[20];
switch(TimeFormat)
{
case tfMSF :
{int Minutes = MCI_MSF_MINUTE(Time);
int Seconds = MCI_MSF_SECOND(Time);
int Frames = MCI_MSF_FRAME(Time);
sprintf(Buffer,"%.2i: %.2i /frame %.2i",Minutes,Seconds,Frames);
break ;}
case tfTMSF :
{int Minutes = MCI_TMSF_MINUTE(Time);
int Seconds = MCI_TMSF_SECOND(Time);
int Track = MCI_TMSF_TRACK(Time);
int Frames = MCI_TMSF_FRAME(Time);
sprintf(Buffer,"Track %.2i %.2i:%.2i /frame %.2i",Track,Minutes,Seconds,Frames);
break;}
case tfMilliseconds :
{int Minutes = Time/60000;
int Seconds = (Time/1000)%60;
int Frames = Time%1000;
sprintf(Buffer,"%.2i: %.2i.%.3i",Minutes,Seconds,Frames);
break ;}
case tfHMS :
{ int Hours=MCI_HMS_HOUR (Time);
int Minutes = MCI_HMS_MINUTE(Time);
int Seconds = MCI_HMS_SECOND(Time);
sprintf(Buffer,"%.2i %.2i:%.2i ",Hours,Minutes,Seconds);
break;}
case tfFrames : sprintf(Buffer,"%i frames", Time);
break;
case tfBytes : sprintf(Buffer,"%i Bytes",Time);
break;
case tfSamples : sprintf(Buffer,"%i Samples",Time);
break;
default :
{int Hours=MCI_HMS_HOUR (Time);
int Minutes = MCI_HMS_MINUTE(Time);
int Seconds = MCI_HMS_SECOND(Time);
int Frames = MCI_TMSF_FRAME(Time);
sprintf(Buffer,"%.2i: %.2i: $.2i .%i",Hours,Minutes,Seconds,Frames);
}
}
return AnsiString(Buffer);
}

Hänge diesen Code noch unten an das Event womit eine deine Dateien in den Media Player geladen werden.
Code:
}
if (MediaPlayer1->TimeFormat==tfTMSF)
{MediaPlayer1->TimeFormat=tfMSF; //For TrackLength we get rubbish if we use tfTMSF
TrackTime->Caption = TimeString(MediaPlayer1->TrackLength[CDTrackNum],MediaPlayer1->TimeFormat);
MediaPlayer1->TimeFormat=tfTMSF;}
else TrackTime->Caption = TimeString(MediaPlayer1->Length,MediaPlayer1->TimeFormat);
Timer1->Enabled= true;
}

Ich hoffe das hilft dir! ;-) :) ;-)
 
fabian24 hat gesagt.:
Hallo,

das ist schwierig, aber trotzdem:
Erstelle einen Timer (Interval=100; Name=Timer1)
Erstelle Zwei Label:
1) TrackTime = Länge des clips/songs
2) Position = Aktuelle Zeit

Erstelle das OnTimer Event des Timers:
Code:
{ 
if (MediaPlayer1->Mode != mpNotReady)
Position->Caption = TimeString(MediaPlayer1->Position,MediaPlayer1->TimeFormat);
}

Jetzt füge einfach unten in den Quelltext ein; String für TimeFormat:
Code:
AnsiString TForm1::TimeString(int Time,TMPTimeFormats TimeFormat)
{
char Buffer[20];
switch(TimeFormat)
{
case tfMSF :
{int Minutes = MCI_MSF_MINUTE(Time);
int Seconds = MCI_MSF_SECOND(Time);
int Frames = MCI_MSF_FRAME(Time);
sprintf(Buffer,"%.2i: %.2i /frame %.2i",Minutes,Seconds,Frames);
break ;}
case tfTMSF :
{int Minutes = MCI_TMSF_MINUTE(Time);
int Seconds = MCI_TMSF_SECOND(Time);
int Track = MCI_TMSF_TRACK(Time);
int Frames = MCI_TMSF_FRAME(Time);
sprintf(Buffer,"Track %.2i %.2i:%.2i /frame %.2i",Track,Minutes,Seconds,Frames);
break;}
case tfMilliseconds :
{int Minutes = Time/60000;
int Seconds = (Time/1000)%60;
int Frames = Time%1000;
sprintf(Buffer,"%.2i: %.2i.%.3i",Minutes,Seconds,Frames);
break ;}
case tfHMS :
{ int Hours=MCI_HMS_HOUR (Time);
int Minutes = MCI_HMS_MINUTE(Time);
int Seconds = MCI_HMS_SECOND(Time);
sprintf(Buffer,"%.2i %.2i:%.2i ",Hours,Minutes,Seconds);
break;}
case tfFrames : sprintf(Buffer,"%i frames", Time);
break;
case tfBytes : sprintf(Buffer,"%i Bytes",Time);
break;
case tfSamples : sprintf(Buffer,"%i Samples",Time);
break;
default :
{int Hours=MCI_HMS_HOUR (Time);
int Minutes = MCI_HMS_MINUTE(Time);
int Seconds = MCI_HMS_SECOND(Time);
int Frames = MCI_TMSF_FRAME(Time);
sprintf(Buffer,"%.2i: %.2i: $.2i .%i",Hours,Minutes,Seconds,Frames);
}
}
return AnsiString(Buffer);
}

Hänge diesen Code noch unten an das Event womit eine deine Dateien in den Media Player geladen werden.
Code:
}
if (MediaPlayer1->TimeFormat==tfTMSF)
{MediaPlayer1->TimeFormat=tfMSF; //For TrackLength we get rubbish if we use tfTMSF
TrackTime->Caption = TimeString(MediaPlayer1->TrackLength[CDTrackNum],MediaPlayer1->TimeFormat);
MediaPlayer1->TimeFormat=tfTMSF;}
else TrackTime->Caption = TimeString(MediaPlayer1->Length,MediaPlayer1->TimeFormat);
Timer1->Enabled= true;
}

Ich hoffe das hilft dir! ;-) :) ;-)
hi, vielen dank für den Code, aber es funktioniert irgendwie nicht, oder ich habe was falsch gemacht,
diese folgende fehlermeldung bekomme ich:

[C++ Fehler] Unit1.cpp(35): E2451 Undefiniertes Symbol 'TrackTime'
[C++ Fehler] Unit1.cpp(35): E2268 Aufruf der undefinierten Funktion 'TimeString'
[C++ Fehler] Unit1.cpp(35): E2451 Undefiniertes Symbol 'CDTrackNum'
[C++ Fehler] Unit1.cpp(138): E2268 Aufruf der undefinierten Funktion 'TimeString'
[C++ Fehler] Unit1.cpp(142): E2316 'TForm1::TimeString(int,TMPTimeFormats)' ist kein Element von 'TForm1'
[C++ Fehler] Unit1.cpp(150): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(150): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(150): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(157): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(157): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(157): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(157): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(163): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(163): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(163): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(169): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(169): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(169): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(182): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(182): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(182): E2206 Ungültiges char-Zeichen '$' (0x24)
[C++ Fehler] Unit1.cpp(182): E2323 Ungültiges Zahlensuffix

ich verstehe nicht ganz, wo all diese codes hinkommen, ich würde mich sehr freuen wenn du es vieleicht ein bisschen anders erklären könntest, danke schonmal.

MFG Christian
 
hi, vielen dank für den Code, aber es funktioniert irgendwie nicht, oder ich habe was falsch gemacht,
diese folgende fehlermeldung bekomme ich:

[C++ Fehler] Unit1.cpp(35): E2451 Undefiniertes Symbol 'TrackTime'
[C++ Fehler] Unit1.cpp(35): E2268 Aufruf der undefinierten Funktion 'TimeString'
[C++ Fehler] Unit1.cpp(35): E2451 Undefiniertes Symbol 'CDTrackNum'
[C++ Fehler] Unit1.cpp(138): E2268 Aufruf der undefinierten Funktion 'TimeString'
[C++ Fehler] Unit1.cpp(142): E2316 'TForm1::TimeString(int,TMPTimeFormats)' ist kein Element von 'TForm1'
[C++ Fehler] Unit1.cpp(150): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(150): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(150): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(157): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(157): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(157): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(157): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(163): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(163): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(163): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(169): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(169): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(169): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(182): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(182): E2323 Ungültiges Zahlensuffix
[C++ Fehler] Unit1.cpp(182): E2206 Ungültiges char-Zeichen '$' (0x24)
[C++ Fehler] Unit1.cpp(182): E2323 Ungültiges Zahlensuffix

ich verstehe nicht ganz, wo all diese codes hinkommen, ich würde mich sehr freuen wenn du es vieleicht ein bisschen anders erklären könntest, danke schonmal.

MFG Christian
 
Oh! Sorry!

Der Fehler Liegt bei mir:
Hab dir vergessen zu sagen das man die Header-Datei von Unit1 ändern muss.

Bessere Idee! Gib mir deine E-Mail Adresse dann schick ich dir ein Beischbiel hierzu!
 
ich habe die mail bekommen, und die datei es hat funktioniert, ich bin dir sehr dankbar dass du mir geholfen hast.
Noch eine Frage hätte ich:
wie bekomme ich die millisekunden weg, weil das nervt, das muss doch irgendwie zu schaffen sein oder?

MFG Christian
 
Also ich könnte mir vorstellen, daß sich nach knapp 2 Jahren durchaus ein bißchen was an den Bibliotheken geändert hat. Zumindest sind die ursprünglichen Posts so alt. :rolleyes:
 

Neue Beiträge

Zurück