29/07/08 19:57
gantonio
Ma allora non hai capito la mia risposta ...
NON ti serve eliminare quei 3 caratteri ... non ti serve in nessuna parte del codice ... quindi, perche' impegnarti a capire e scrivere un codice che non ti serve?
aaa
29/07/08 20:00
ma allora come posso generare la lista dei file???
29/07/08 20:18
gantonio
E cosa c'entrava il togliere i 3 caratteri finali con la lista dei file?
La lista dei file la ottieni - te lo ripeto - creando una "lista semplice" (linked list) e aggiungendo un elemento man mano che i file vengono trovati.
aaa
30/07/08 6:21
gantonio
Beh ... mi fa piacere che ci sei arrivato ...
Nelle prime righe, la maschera *.* serve alla FindFirstFile per sapere quali file deve trovare.
Quello NON e' il file trovato ma il file DA TROVARE e quindi NON ti serve.
Quello che ti serve e' - come hai detto - il file mentre viene trovato in quanto, all'interno del ciclo, lo inserisci cosi' com'e', nella tua lista SENZA togliere nulla.
Ok?
Ultima modifica effettuata da gantonio 30/07/08 6:21
aaa
30/07/08 8:46
ciao,
coi puntatori non ci so fare + di tanto (lo li studierò ma vorrei il programma pronto per fine mattina!!!)... non so se in questo codice l'errore è di visualizzazione o di assegnamento alla list (ti ho segnato i 2 punti con possibili errori):
#include <iostream.h>
#include <stdio.h>
#include <windows.h>
#include <list>
#include <cstdlib>
using namespace std;
list<char> lista;
void search(char *p)
{
WIN32_FIND_DATA fd;
int dim;
char tlist[MAX_PATH];
char pf[MAX_PATH];
strcpy(pf, p);
strcat(pf, "\*.*");
HANDLE h = FindFirstFile(pf, &fd);
if (h != INVALID_HANDLE_VALUE)
{
do
{
if( strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, ".."))
{
if(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
printf ("[%s]\n", fd.cFileName);
char pf[MAX_PATH];
strcpy(pf, p);
strcat(pf, "\");
strcat(pf, fd.cFileName);
search(pf);
}
else
{
printf ("\t%s\n", fd.cFileName);
strcpy(tlist, p);
strcat(tlist, "\");
strcat(tlist, fd.cFileName);
lista.push_back(*tlist);/*possibile errore (penso sia questo)*/
}
}
} while (FindNextFile(h, &fd));
FindClose(h);
}
else
printf("Errore %d\n", GetLastError ());
}
int main()
{
char percorso[MAX_PATH];
cout<<"Inserire il percorso in effettuare la ricerca: ";
cin>>percorso;
search(percorso);
cout<<endl<<endl<<endl;
//possibile errore di visualizzazione
list<char>::iterator a = lista.begin();
while(a != lista.end())
{
cout<<*a<<endl;
a++;
}
system("pause");
}
ciao grazie
Ultima modifica effettuata da 30/07/08 8:51
30/07/08 9:24
ps: se non hai tempo per correggerlo momentaneamente dimmi dov'è l'errore!!!
please