Mp3 Bit auslesen und MB auslesen Wie?

Cooper3210

Grünschnabel
Hallo
Ich hänge beim Coden fest und suche alle Hifle die ich bekommen kann.

1. Ich kann machen was ich will ich verstehe einfach nicht warum oder wie ich Unterordner Durchsuchen kann. Ich habe das mehrfach versucht hänge dort aber einfach fest.
Code:
// kleine Dateien suchen
bool SearchForSmallFiles(int iSize) {
	// Beginn - Ordnerdialog
	char display[MAX_PATH];
	BROWSEINFO bi;
	bi.hwndOwner = GetDesktopWindow();
	bi.pidlRoot = NULL;
	bi.pszDisplayName = display;
	bi.lpszTitle = "Ordner auswählen:";
	bi.ulFlags = BIF_EDITBOX|BIF_VALIDATE;
	bi.lpfn = NULL;
	bi.lParam = 0;
	bi.iImage = 0;
	LPITEMIDLIST res = SHBrowseForFolder(&bi);
	if (!res)
		return true;
	char dir[MAX_PATH];
	BOOL ret = SHGetPathFromIDList(res, dir);
	if (ret == FALSE) {
		ErrorMessage("Der Pfad \"%s\" konnte nicht gefunden werden!", display);
		return false;
	}
	// Ende - Ordnerdialog
	// dir enthält den Ordnerpfad
	// Beginn - Dateien suchen
	sprintf(g_szDirectory, dir);
	WIN32_FIND_DATA wfd;
	char filename[MAX_PATH];
	sprintf(filename, "%s\\*.mp3", dir);
	HANDLE hFind = FindFirstFile(filename, &wfd);
	if (hFind == INVALID_HANDLE_VALUE) {
		DWORD dwError = GetLastError();
		if (dwError != ERROR_FILE_NOT_FOUND) {
			char errmsg[1024];
			FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, dwError, GetUserDefaultLangID(), errmsg, 1024, NULL);
			ErrorMessage("%s\nFehlercode: %d", errmsg, dwError);
			return false;
		}
		return true;
	}
	if (wfd.nFileSizeLow < iSize) {
		char* buffer = new char[strlen(wfd.cFileName) + 1];
		sprintf(buffer, "%s", wfd.cFileName);
		g_lSmallFiles.push_back(buffer);
	}
	BOOL found = FindNextFile(hFind, &wfd);
	do {
		if (found == FALSE) {
			DWORD dwError = GetLastError();
			if (dwError != ERROR_NO_MORE_FILES) {
				char errmsg[1024];
				FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, dwError, GetUserDefaultLangID(), errmsg, 1024, NULL);
				ErrorMessage("%s\nFehlercode: %d", errmsg, dwError);
				FindClose(hFind);
				return false;
			}
		}
		if (wfd.nFileSizeLow < iSize) {
			char* buffer = new char[strlen(wfd.cFileName) + 1];
			sprintf(buffer, "%s", wfd.cFileName);
			g_lSmallFiles.push_back(buffer);
		}
		found = FindNextFile(hFind, &wfd);
	} while (found != FALSE);
	FindClose(hFind);
	return true;
	// Ende - Dateien suchen
}
Das geht soweit aber eben Ohne Unterordner .Könnte mir einer von Euch denn weg zeigen wie ich auch gleich die unterordner mit durchsuchen kann ?

2. Ich möchte dieses später fast gleich noch mal so übernehmen aber die Bit einer Mp3 datei suchen lassen.
Wie macht man das?
Ich möchte gern alle Mp3´s haben die unter 50 Bit sind .

Würde mich sehr über Hilfe freuen
Mfg cooper
 
Moin Moin,

1) Bei Unterordnern helfen dir rekursive Funktionen.
Probiers mal mit:
Code:
BOOL FindFiles(char FilePath[MAX_PATH])
{
	HANDLE find;
	WIN32_FIND_DATA filedata;

	find = FindFirstFile(FilePath,&filedata);
	if(find == INVALID_HANDLE_VALUE)return FALSE;
	do
	{
		if(filedata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
		{
			goodfile = FindFiles(filedata.cFileName);
			continue;
		}
		//was ist bei Dateien zu machen
		goodfile = FindNextFile(find,&filedata);
	}while(goodfile);

	FindClose(find);
}
}
2) Bitte was meinst du? Dateien kleiner 50 Bit sind kleiner 7 Byte Da ist nichtmal der Header drin. Mach dich mal schlau was Bits und Bytes sind.

Gruß Michael
 
Vorsicht Falle!
So wie Du das geschrieben hast, MCoder, gibt das eine Endlosschleife. Da diese Funktion auch die virtuellen Verzeichnisse '.' und '..' zurückgibt, muß man auf den Verzeichnisnamen prüfen:
Code:
        if(filedata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
        {
            if((strcmp(filedata.cFilename, ".") != 0) && (strcmp(filedata.cFilename, "..") != 0))
                goodfile = FindFiles(filedata.cFileName);
            continue;
        }
 
Mist stimmt :(

Auch wenn ich nicht MCoder bin;)

Hab das nur ausm Gedächtnis runter getippert...

Gut das hier jemand noch aufpasst;)
Gruß Michael
 
Ups! Sorry! :-( Da habe ich nicht aufgepasst. Hatte wohl vorher einen Beitrag von MCoder gelesen. Nich böse sein!
 

Neue Beiträge

Zurück