Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

c++ Datei auslesen

Diskussion: c++ Datei auslesen im Forum Code Kitchen, in der Kategorie Software Home; Anzeige So hallo erstmal. Ich muss für die Schule ein Programm schreiben. Unzwar möchte ich den Pfad einer Datei über ...

Antwort
Alt 03.11.09, 16:13   #1 (permalink)
 
Registriert seit: 03.11.09
k3sh Leistung: Facit NTK
Likes: 0
Wink c++ Datei auslesen

Anzeige

So hallo erstmal.

Ich muss für die Schule ein Programm schreiben. Unzwar möchte ich den Pfad einer Datei über eine Suchfunktion herausfinden um dann Interpret, Titel, Dauer und einen Tag aus zu lesen. Kennt jemand dafür Funktionen.

Ich fand beim googlen nur struck id3_write gefunden aber damit kam ich leider nicht klar :(.

Mfg Marvin

k3sh ist offline   Mit Zitat antworten
Alt 03.11.09, 21:36   #2 (permalink)
 
Benutzerbild von bad_alloc
 
Registriert seit: 27.12.07
bad_alloc Leistung: 8086
Likes: 39
Standard

Zitat:
Interpret, Titel, Dauer und einen Tag aus zu lesen.
Ich schließe mal, dass du MP3 Dateien mit ID3 Tags lesen willst
Zitat:
Pfad einer Datei über eine Suchfunktion herausfinden
Was für eine Suchfunktion? Musst du die machen, oder ist die extern?
Zitat:
The ID3 Tag is kept right at the end of the file. It is kept in plain text 127 characters from the end of the file. You should be able to programme that easily. Sorry, I don't know C++ so I can't send any source code.<br>
Das findet man nach kurzem Googlen nach "c++ read mp3 file". Im Allgemeinen ist das englischsprachige Internet wesentlich ergiebiger in Programmierfragen als das Deutsche. Du musst also nur die Länge der Datei bestimmen, den Lesezieger auf Länge - 127 setzten und den lesen.

mfg
bad_alloc
__________________
You shoot yourself in somebody else's foot.|Dann gabs da noch den Mathematiker der P?=NP in O(1) erklärte.
|[A]| = p(·,|[A]|)+1
bad_alloc ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 03.11.09, 21:49   #3 (permalink)
Themenstarter
 
Registriert seit: 03.11.09
k3sh Leistung: Facit NTK
Likes: 0
Standard

Erstmal danke

Also schreiben muss ich nichts Das ist mehr ein Zusatz zu unseren Programm daher haben ich keine Richtlinien. Das mit den ID3 Tags stimmt schon. Allerdings habe ich anch Deutschen Sachen gegooled.

Die Suchfunktion schreibe ich ebenfalls selbst mit den Functionen FindNextFile und FindFirstFile.

Magst du mir vielleicht trotzdem ncoh sagen wie ich die Datei einbinde ich schreibe dir noch kurz den Quelltext:

struct id3_write
{
char tag[3];//immer TAG
char title[30];
char artist[30];
char album[30];
char year[4];
char komment[28];
char track[2];
char genre[1];
}write_id3;
k3sh ist offline   Mit Zitat antworten
Alt 04.11.09, 08:12   #4 (permalink)
 
Registriert seit: 14.06.07
Machine Leistung: Facit NTK
Machine eine Nachricht über ICQ schicken
Likes: 0
Standard

sooo ich bin heut mal ganz sozial und zeig dir, wie ich das mal gemacht hab.. zumindest nen ausschnitt

die struct:
Code:
// MP3ID3V1TAG structure
struct MP3ID3V1TAG
{
	char ident[3]; // TAG
	char title[30];
	char artist[30];
	char album[30];
	char year[4];
	char comment[28];
	BYTE reserved;
	BYTE tracknum;
	BYTE genre;
};
m_strAlbum, usw. sind einfach nur CString-Membervariablen, wo die Tag-Daten abgelegt werden..

der code:

Code:
// read the ID3 tag

		// set up a structure for reading the ID3 version 1 tag
		MP3ID3V1TAG sID3V1;

		if (SetFilePointer(hFile,-128,NULL,FILE_END) != INVALID_SET_FILE_POINTER &&
			ReadFile(hFile,&sID3V1,128,&dwNumBytesRead,NULL) &&
			dwNumBytesRead == 128 && memcmp(sID3V1.ident,"TAG",3) == 0)
		{
			char strTemp[31]; strTemp[30] = 0; // make a temporary null-terminated buffer

			memcpy(strTemp,sID3V1.title,30); m_strTitle = strTemp;
			memcpy(strTemp,sID3V1.artist,30); m_strArtist = strTemp;
			memcpy(strTemp,sID3V1.album,30); m_strAlbum = strTemp;

			strTemp[4] = 0; memcpy(strTemp,sID3V1.year,4); m_strYear = strTemp;

			// now, depending on the reserved byte, the comment is 28 bytes or 30 bytes
			if (sID3V1.reserved)
			{
				// NOTE: even if sID3V1.album is of size 28, the reserved and tracknum
				// are right after, so they'll be included in the comment, which is what
				// we want
				memcpy(strTemp,sID3V1.comment,30); m_strComment = strTemp;
			}
			else
			{
				memcpy(strTemp,sID3V1.comment,28); m_strComment = strTemp;
				m_nTrack = sID3V1.tracknum;
				m_nGenre = sID3V1.genre;
			}

			m_dwValidity |= MP3VLD_ID3V1_VALID;
		}
Machine ist offline   Mit Zitat antworten
Alt 27.11.09, 10:26   #5 (permalink)
Themenstarter
 
Registriert seit: 03.11.09
k3sh Leistung: Facit NTK
Likes: 0
Standard

So erstmal Danke Ich habe es heute endlich geschafft mich um deine Antwort zu kümmern. Hatte leider viel zu tun. Jetzt habe ich neue Fragen zu deinen Code die ich nicht beantworten konnte.Was genau bewirkt "|=".Wie weiße ich dem Handle eine Musik Datei zu?Was genau muss ich mit dem Struct machen (Einbinden, Aufrufen, Auslesen)Mfg Marvin
k3sh ist offline   Mit Zitat antworten
Alt 27.11.09, 10:46   #6 (permalink)
Senior Member
 
Registriert seit: 27.06.04
Cyberm@ster Leistung: Facit NTK
Likes: 0
Standard

Wie wärs mit ein wenig Eigeninitiative?

Wenn du nach SetFilePointer( googlen würdest, wüsstest du, dass hFile ein File-Handle ist. Wenn du diesem Link folgst findest du heraus wie du eine Datei öffnest um einen File-Handle zu erstellen: http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

m_dwValidity |= MP3VLD_ID3V1_VALID ist die Kurzform fürm_dwValidity = m_dwValidity | MP3VLD_ID3V1_VALID

das bedeutet, dass m_dwValidity true ist wenn entweder m_dwValidity oder MP3VLF_ID3V1_VALID true sind (was du auch selbst mit einer guten C/C++ Referenz hättest herausfinden können...)

Geändert von Cyberm@ster (27.11.09 um 11:01 Uhr)
Cyberm@ster ist offline   Mit Zitat antworten
Alt 27.11.09, 10:50   #7 (permalink)
Themenstarter
 
Registriert seit: 03.11.09
k3sh Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Zitat von Cyberm@ster Beitrag anzeigen
Wie wärs mit ein wenig Eigeninitiative?

Wenn du nach SetFilePointer( googlen würdest, wüsstest du, dass hFile ein File-Handle ist. Wenn du diesem Link folgst findest du heraus wie du eine Datei öffnest um einen File-Handle zu erstellen: http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

m_dwValidity |= MP3VLD_ID3V1_VALID ist die Kurzform fürm_dwValidity = m_dwValidity | MP3VLD_ID3V1_VALID

das bedeutet, dass m_dwValidity true ist wenn entweder m_dwValidity oder MP3VLF_ID3V1_VALID true sind (was du auch selbst mit einer guten C/C++ hättest herausfinden können...)
Ist es nicht ein wenig dreist zu behaupten das ich nichts in eigeninitiative versucht hätte? Der einzige unterschied ist das ich die Borlandhilfe benutzt habe und daher schon wusste, dass es ein Handle ist. Jedoch änderte das nichts daran, dass mir das wissen fehlte einen Handle eine Datei zu zu ordnen.Mfg Marvin
k3sh ist offline   Mit Zitat antworten
Alt 27.11.09, 11:00   #8 (permalink)
Senior Member
 
Registriert seit: 27.06.04
Cyberm@ster Leistung: Facit NTK
Likes: 0
Standard

Wenn du wirklich denkst, die Definition von Eigeninitiative sei mal kurz in die Borland Hilfe zu schauen und gleich zu fragen wenn du nicht findest was du suchst dann hast du wohl Eigeninitiative bewiesen.

Wie dem auch sei, ob dreist oder nicht, ich hab deine Frage beantwortet anstatt dich mit nem "Google ist dein Freund" abzuspeisen.
Cyberm@ster ist offline   Mit Zitat antworten
Alt 27.11.09, 11:05   #9 (permalink)
Themenstarter
 
Registriert seit: 03.11.09
k3sh Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Zitat von Cyberm@ster Beitrag anzeigen
Wenn du wirklich denkst, die Definition von Eigeninitiative sei mal kurz in die Borland Hilfe zu schauen und gleich zu fragen wenn du nicht findest was du suchst dann hast du wohl Eigeninitiative bewiesen.

Wie dem auch sei, ob dreist oder nicht, ich hab deine Frage beantwortet anstatt dich mit nem &quot;Google ist dein Freund&quot; abzuspeisen.
Dafür hast du auch ein kleines Danke verdient. Allerdings war das mit dem Handle das einzige was ich nicht gegooglet habe.Mfg Marvin
k3sh ist offline   Mit Zitat antworten
Alt 27.11.09, 11:36   #10 (permalink)
Administrator
 
Benutzerbild von throjan
 
Registriert seit: 25.09.01
throjan Leistung: Pentium Ithrojan Leistung: Pentium I
Likes: 133
Standard

Zitat:
Zitat von k3sh Beitrag anzeigen
Dafür hast du auch ein kleines Danke verdient
Dafür haben wir ja jetzt die "Bewerte diesen Beitrag"-Funktion. Bitte dafür nutzen.
throjan ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » c++ Datei auslesen
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
OllyDBG - Datei auslesen kuzco Hacks & Crackmes 2 16.09.09 20:02
Text Datei auslesen? Virus (Web-) Design und webbasierte Sprachen 9 01.08.07 22:11
Nero Log-Datei auslesen..... machine Die Problemzone 0 28.02.07 16:34
Txt Datei auslesen und vergleichen Chakky (Web-) Design und webbasierte Sprachen 7 20.07.05 19:28
in c aus datei richtig auslesen MacFrosty Code Kitchen 2 29.06.04 13:46


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61