|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Dec 2005
Messaggi: 6
|
[C] Acquisizione nomi file e cartelle
Ciao a tutti,
volevo sapere se era possibile (lavorando con OS Windows XP) acquisire in linguaggio C il nome di una lista di cartelle all'interno di un altra e il nome di altri file all'interno delle singole cartelle. Provo a spiegarmi meglio...io ho la seguente cartella principale: C:\clienti all'interno di questa cartella ho altre cartelle con vari nominativi: C:\clienti\rossi mario C:\clienti\bianchi carlo C:\clienti\verdi gianni ... ... e all'interno di ogni cartella ho dei file: C:\clienti\rossi mario\CI.txt C:\clienti\rossi mario\CF.txt C:\clienti\rossi mario\libretto.jpg ... ... ebbene vorrei acquisire solo i nomi e avere come output a video qualcosa del genere: nome cliente: rossi mario file associati: CI.txt , CF.txt, libretto.jpg ... qualcuno di voi saprebbe indicarmi come fare per importare i nomi e scorrere all'interno delle varie cartelle??? un grazie anticipato...Fabio |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
qui c'é un esempio che spiega come enumerare il contenuto di una directory in C su Windows: http://msdn.microsoft.com/en-us/libr...00(VS.85).aspx
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Nov 2005
Città: Mantova
Messaggi: 115
|
Puoi usare la funzione system() (std lib) per salvare il contenuto delle cartelle in un file di testo attraverso il comando DIR:
Codice:
system("DIR C:\clienti >nomi.txt");
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ci sono tanti modi, ma la maggior parte dipende dal compilatore e dal sistema operativo che usi. Quindi dicci il compilatore, il sistema operativo mi sembra che sia senza ombra di dubbio Windows.
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
una domanda: in questi casi, se il programma deve essere portabile e i metodi esistono solo per ogni singola piattaforma come si procede? si risolve per ogni sistema operativo e nel programma si controlla l'so e si procede di conseguenza?
Ultima modifica di ndakota : 25-06-2009 alle 15:44. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Si usa una libreria di più alto livello, se disponibile (fosse in C++ potrei consigliare le boost, o al limite anche le QT). Oppure si lavora per #define, scrivendosi la propria libreria che astrae il SO.
Ultima modifica di cionci : 25-06-2009 alle 15:52. |
|
|
|
|
|
#7 |
|
Junior Member
Iscritto dal: Dec 2005
Messaggi: 6
|
grazie a tutti ragazzi per le risposte utilissime...
volevo sfruttare ancora questo post per un problema riguardante la creazione di cartelle... sto scrivendo un programmino che crea una lista di cartelle ed ogni cartella prende il nome da un buffer di stringhe... siccome lo devo usare unicamente io e quindi nn ho problemi di portabilita pensavo di usare il comando: system("MKDIR C:\\Users\\Fabio\\Desktop\\xxxx"); al posto di "xxxx" pero volevo inserire in runtime un nome preso dal buffer... quindi supponendo di avere il buffer: ListaNomi[SIZE]={"AppData","Program",......} volevo creare sul desktop la cartella "AppData" passando come argomento "ListaNomi[0]".... qualcuno saprebbe per caso indicarmi quale sia la giusta sintassi per farlo.... grazie ancora...Fabio |
|
|
|
|
|
#8 | ||
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
usa la funzione CreateDirectory: http://msdn.microsoft.com/en-us/libr...55(VS.85).aspx Quote:
- ottenere il path del desktop - concatenargli la stringa puntata da ListaNomi[0] - passare la stringa cosi ottenuta al primo parametro della CreateDirectory per ottenere il percorso del desktop del tuo utente (o anche del desktop comune a tutti gli utenti se vuoi) puoi usare la funzione SHGetKnownFolderPath; attenzione peró alla versione minima richiesta: questa funzione é stata introdotta solo in Windows Vista, quindi il programma non funzionerá su XP; su XP dovresti usare la versione precedente di quella funzione che é SHGetFolderPath e che ormai é deprecata. una volta ottenuto il percorso del desktop io ti consiglierei di evitare troppi sbattimenti per concatenargli un'altra stringa: wrappa la stringa ottenuta in un oggetto std::string o std::wstring, usa l'operatore += e poi riottieni una C-string col metodo std::string::c_str(). |
||
|
|
|
|
|
#9 |
|
Bannato
Iscritto dal: Jun 2009
Messaggi: 7
|
Guarda che è molto piú semplice usare la funzione Trova_nome_file tramite metodo put_int_a...
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#11 |
|
Bannato
Iscritto dal: Jun 2009
Messaggi: 7
|
...e aggiungo che se compilassi una dll utilizzando una query mySql interfacciata con un'estensione concatenata in m# avresti la possibilità di virtualizzare il processo... Che non é poco...
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
bannate questa faccia da burla per cortesia?
![]() in 7 messaggi non ha fatto altro che sparare minchiate a cavolo tanto per prendere per i fondelli la nostra intera categoria... povero frustrato |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:52.





















