hallo,
Ik heb een probleem mbt tot het scrollen door dirs dmv een recursieve functie. De onderstaande functie doet het volgende/ zou het volgende moeten doen:
1: scroll door eerste dir en laat alle files met mp3 als extentie zien
2: scroll wederom door dir en roep jezelf nu aan met als argument het path van de gevonden dir
Op deze manier wil ik mijn hd afscannen naar mp3 bestanden. Maar om de een of andere reden bereikt de functie steeds maar de eerste dir. Voorbeeld:
ik scroll door de directorystructuur op d:\\
wat er nu tevoorschijn komt door "cout << "full: " << full << endl; //debüg" is:
Dit zou niet moeten kunnen want de variable full is toch echt lokaal en wordt dus elke keer bij "_fullpath( full, bestand.name , _MAX_PATH ) != NULL " opnieuw gezet.
Ik heb een probleem mbt tot het scrollen door dirs dmv een recursieve functie. De onderstaande functie doet het volgende/ zou het volgende moeten doen:
1: scroll door eerste dir en laat alle files met mp3 als extentie zien
2: scroll wederom door dir en roep jezelf nu aan met als argument het path van de gevonden dir
Op deze manier wil ik mijn hd afscannen naar mp3 bestanden. Maar om de een of andere reden bereikt de functie steeds maar de eerste dir. Voorbeeld:
ik scroll door de directorystructuur op d:\\
code:
1
2
3
4
| d:\test\ d:\test\mapa\ d:\fotos\ d:\mp3bestanden\ |
wat er nu tevoorschijn komt door "cout << "full: " << full << endl; //debüg" is:
code:
1
2
3
4
| d:\test\ d:\test\mapa\ d:\test\mapa\fotos d:\test\mapa\mp3bestanden\ |
Dit zou niet moeten kunnen want de variable full is toch echt lokaal en wordt dus elke keer bij "_fullpath( full, bestand.name , _MAX_PATH ) != NULL " opnieuw gezet.
code:
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
| void findInDir(char dir[])
{
_finddata_t bestand;
long deFile;
char full[800];
chdir(dir); // ga naar de dir
if( (deFile = _findfirst( "*", &bestand )) != -1L ) //zoek het eerste bestand
{
do
{
if (!(bestand.attrib & _A_SUBDIR)) //als het geen subdir is
if( _fullpath( full, bestand.name , _MAX_PATH ) != NULL ) // haal het full path op
if (vergelijkExt(bestand.name, "mp3")) //is het een mp3?
cout << full << endl;
}
while ( _findnext( deFile, &bestand) == 0 ); // zolang er een item gevonden wordt
}
if( (deFile = _findfirst( "*", &bestand )) != -1L ) // zoek wederom eerste item
{
do
{
if (bestand.attrib & _A_SUBDIR) // als er een subdir gevonden word
{
//cout << bestand.name << "\n";
if (strcmp(bestand.name, ".") && strcmp(bestand.name, "..")) //subdir is niet . óf ..
if( _fullpath( full, bestand.name , _MAX_PATH ) != NULL ) { //check het full path
cout << "full: " << full << endl; //debug
findInDir(full); //roep jezelf aan met de subdir
}
}
}
while ( _findnext( deFile, &bestand) == 0 ); // zolang er een item gevonden wordt
}
} |