Mcisendstring
#1
geschrieben 08. März 2006 - 10:29
ich und zwei kollegen müssen für die schule einen medi player programmieren, das hat auch bis jetzt alles soweit geklappt, nur sollten wir noch wissen wie wir es machen können das die titelnamen länger als z.B "Titel1.mp3" sein dürfen. und wir sollten wissen wie wir die länge des titels auf eine edit komponente oder so legen können.es sollte dann so funktionieren das die zeit bis zum ende dest titel hochgezählt wird, wie in einem media player halt.
zum abspielen haben wir mciSendString genommen, nur funktioniert die zeitanzeige über die funktion "lengt" nicht, wir wissen nicht wie es zu ahndhaben ist!
als info:
wir verwenden den c++ builder 5 von borland
os: win xp prof/home sp2
Anzeige
#2
geschrieben 08. März 2006 - 10:50
void GetSongLength(){ char lpszReturnString[128]; char curr_time[128]; int h,m,s; int h1,m1,s1; memset(lpszReturnString,'\0',sizeof(lpszReturnString)); h=m=s=0; h1=m1=s1=0; mciSendString("status song length",lpszReturnString,128,0); mciSendString("status song position",curr_time,128,0); if(lpszReturnString){ /* Get Total time */ int len = atoi(lpszReturnString); len =len / 1000; for(int count=0;count<len;count++){ if(s == 60) { s=0; m++; } if(m == 60) { m=0; h++; } s++; } }
Quelle
Dieser Beitrag wurde von Witi bearbeitet: 08. März 2006 - 10:51
#4
geschrieben 08. März 2006 - 15:36
Füg mal ein a an...
#5
geschrieben 08. März 2006 - 16:32
@witi: danke werde es gleich ausprobieren!
weiß vielleicht jemand noch ne lösungfür das problem mit der länge der dateinamen?
#6
geschrieben 08. März 2006 - 16:38
#7
geschrieben 08. März 2006 - 16:42
Forum
mein username ist gewup!
Dieser Beitrag wurde von F$KiNg bearbeitet: 08. März 2006 - 16:43
#9
geschrieben 09. März 2006 - 16:36
Hi ich mach auch bei diesem Projekt mit.
ich möchte die Länge des Liedes in einem editfeld ausgeben => suche Funktion die mir die Länge des Liedes zurückliefert. Mit der Länge möchte ich dann weiterarbeten. Sprich Inkrementieren und Dekrementiere (Funktionen) bereits geschrieben. Hab in einem anderen Forum rausgefunden, dass man die Länge des Liedes mit
mciSendString ("status" + /*Pfad des Liedes*/ + "length" , ? , ? , ? )
Was nun aber anstelle der Fragezeichen eingetragen werden muss weiß ich leider nicht.
die MSDN Homepage hilt mir leider auch nicht weiter.
Falls du mir helfen kannst wäre ich dir sehr dankbar.
gruß gewup
#10
geschrieben 09. März 2006 - 16:39
Zitat
Pointer to a buffer that receives return information. If no return information is needed, this parameter can be NULL.
cchReturn
Size, in characters, of the return buffer specified by the lpszReturnString parameter.
hwndCallback
Handle to a callback window if the "notify" flag was specified in the command string.
Quelle
Ist klar? Oder braucht ihr nähere Infos?
Dieser Beitrag wurde von Witi bearbeitet: 09. März 2006 - 16:40
#11
geschrieben 09. März 2006 - 17:04
Hier der Code:
String Laenge; mciSendString( "status mp3Datei length", Laenge, strlen( const char* str ), NULL );
Weiß aber leider nicht was falsch ist.
gruß gewup
@stefanra
das liegt daran, das mciSendString mit langen Begriffen arbeitet, darum wird
GetShortPathName(?, ?, ?)
benötigt.
gruß gewup
#12
geschrieben 09. März 2006 - 18:41
Etwa so:
int size = 128; char laenge[size]; mciSendString("status mp3Datei length", laenge, size, 0);
#13
geschrieben 09. März 2006 - 22:19
hab mitlerweile die lösoung aber gefunden...
leider in VB
http://www.vbarchiv....v/tipp_557.html
vielleicht versteht du das ja,
ich nämlich nicht.
wär echt toll
#14
geschrieben 10. März 2006 - 12:00
Ich versuche das mal nach c zu übersetzen (ohne Gewähr)
//fileName ist der Name der Datei char laenge[128]; memset(laenge, '\0', sizeof(laenge)); mciSendString("open " + fileName + " type MPEGVideo alias mp3Datei", 0, 0, 0); // möglichweise auch so: // mciSendString("open " + fileName + " alias mp3Datei", 0, 0, 0); mciSendString("status mp3Datei length", laenge, 128, 0);
Dieser Beitrag wurde von Witi bearbeitet: 10. März 2006 - 12:00
#15
geschrieben 10. März 2006 - 15:57
ich habs mal versucht, aber es funktioniert necht ganz so,
die funktion gibt immer nur 256 zurück.
hier ist men code
OpenDialog1->Filter= "Musik Dateien|*.wav; *.mp3; *.wma"; // Funktion um OpenDialog1->Execute(); // über Opendiaog edtLied->Text=OpenDialog1->FileName; // MP3 einlesen //AnsiString a="status "+(edtLied->Text)+" length"; //AnsiString a="open "+(edtLied->Text)+" type MPEGVideo alias mp3Datei"; AnsiString a="open "+(edtLied->Text)+" alias mp3Datei"; char laenge[128]; memset(laenge, '\0', sizeof(laenge)); edtZeit->Text=mciSendString( a.c_str() , 0, 0, 0); //edtZeit->Text=mciSendString(a.c_str(), laenge, 128, 0); //mciSendString("open " + fileName + " alias mp3Datei", 0, 0, 0);
Die ist füge einfach noch einen Button, eine opendialog komponente und 2 editfelder auf die Form und versuch es mal selber, vielleicht findest du ja heraus, was falsch ist. je nach funktion das richtige als kommentar stellen und das andere nicht als Kommentar
gruß gewup
Manchmal liefert sie auch 263 ja nach funktion ?