[C++]stampa directory cartella

di Anonimizzato15033 il
10 risposte
Si vuole compilare un programma in C++ che ci permetta di trovare il percorso di una cartella (non un file, una cartella) e stamparlo sullo schermo.

Io sono riuscito a compilare un programma che fa lo stesso ma con i file, ma non può essere usato per trovare cartelle:
void DirSearch(String* sDir)
	 {
		 try
		 {
			 String* d[] = Directory::GetDirectories(sDir);
			 int numDirs = d->get_Length();

			 for (int i=0; i < numDirs; i++)
			 {
				
				 String* f[] = Directory::GetFiles(d[i],textBox1->Text);
				 int numFiles = f->get_Length();

				 for (int j=0; j < numFiles; j++)
				 {
					 listBox1->Items->Add(f[j]);
				 }
				 DirSearch(d[i]);
			 }
		 }
		 catch (System::Exception* e)
		 {
			 MessageBox::Show(e->Message);
		 }
	 }

10 Risposte

  • Che vuol dire "trovare il percorso di una cartella" ?? Cerca di spiegare meglio il problema ...

    E poi, lo devi fare con C++.NET ?
  • Possibilmente in C oppure in C++ io non so nulla di C# o visual basic (in parole povere niente C++.net)

    Mi spiego meglio
    si vuole inserire una variabile di ricerca la quale una volta avviato il programma verrà assegnato il percorso della la cartella che si vuole trovare e alla fine la variabile verrà stampata sullo schermo

    Flow chart:

    Inserisci la cartella da cercare;
    Ricerca della cartella nel sistema;
    Stampa percorso cartella;
  • Puoi utilizzare FindFirstFile() e FindNextFile() per attraversare tutti i file e cartelle.
  • Però devi deciderti ... Il codice che hai mostrato è .net ...
  • Se vuoi farlo in C++ puoi usare la collezione di librerie Boost.
  • candaluar ha scritto:


    Puoi utilizzare FindFirstFile() e FindNextFile() per attraversare tutti i file e cartelle.
    E si può avere la possibilità di inserire nel campo di ricerca il nome di una cartella?
    tipo per esempio voglio inserire nel campo di ricerca la cartella "Giochi"
    lui mi troverà la cartella o i file che contiene la cartella? perchè a me interessa manipolare solo la cartella e non i file che contiene
  • Leggi la documentazione delle funzioni, la prima



    prevede un puntatore ad una struttura WIN32_FIND_DATA in cui c'è il membro dwFileAttributes che ti dice tutto
  • E si può avere la possibilità di inserire nel campo di ricerca il nome di una cartella?
    tipo per esempio voglio inserire nel campo di ricerca la cartella "Giochi"
    lui mi troverà la cartella o i file che contiene la cartella? perchè a me interessa manipolare solo la cartella e non i file che contiene
    La coppia FindFirstFile()/FindNextFile() ti permettono di "listare" il contenuto di una cartella, ovvero files e sottocartelle: scrivendo una semplice funzione ricorsiva puoi listare poi il contenuto delle sottocartelle e, in definitiva, partendo ad esempio da c:\, potresti listare tutto il contenuto di c:\.
    Sta a te scrivere quella parte di codice che verifica che l'elemento corrente è una directory (lo vedi dal dwFileAttribute) e si tratta della cartella che stai cercando (es. con strcmp()).
    Qui c'è un esempio d'uso:
    http://www.pierotofy.it/pages/extras/forum/2/38187-problema_visualizzare_i_file_in_una_directory/
  • candaluar ha scritto:


    E si può avere la possibilità di inserire nel campo di ricerca il nome di una cartella?...
    La coppia FindFirstFile()/FindNextFile() ti permettono di "listare" il contenuto di una cartella, ovvero files e sottocartelle: scrivendo una semplice funzione ricorsiva puoi listare poi il contenuto delle sottocartelle e, in definitiva, partendo ad esempio da c:\, potresti listare tutto il contenuto di c:\.
    Sta a te scrivere quella parte di codice che verifica che l'elemento corrente è una directory (lo vedi dal dwFileAttribute) e si tratta della cartella che stai cercando (es. con strcmp()).
    Qui c'è un esempio d'uso:
    http://www.pierotofy.it/pages/extras/forum/2/38187-problema_visualizzare_i_file_in_una_directory/
    E posso in qualche modo assemblare il percorso ottenuto dalle due funzioni con la funzione copy file? Nel caso in cui volessi trasferire la cartella giochi in una periferica esterna per esempio?
  • Certo
Devi accedere o registrarti per scrivere nel forum
10 risposte