Newsgroup: it.comp.lang.delphi
Titolo: contare i file di una cartella

 Devo sapere quanti file ci sono in una cartella (senza sottodirectory), 
come posso fare?
--- posted by geoForum on 
http://www.delphiedintorni.it

 ha scritto nel messaggio
news:kxVZd.2615$kC3....@tornado.fastwebnet.it...


 come posso fare?
Se installi Jedi library ti trovi anche un
componente che può fare al caso tuo (JvSearchFiles
Cordialmente,
Stefano

Ho un po' di problemi:
dalla guida ho guardato find first e findnext ma non ci ho capito molto, 
gli esempi che ho trovato in giro sono complessi e le prove che ho fatto 
funzionano solo in parte...
ho anche cercato le Jedi library, ho provato un po' in giro e sul sito 
www.delphi-jedj.org
 ma non sono riuscito a trovare i componenti da 
installare...
se qualcuno può suggerirmi qualcosa... sono un po' in crisi!
Ciao a tutti


 se qualcuno può suggerirmi qualcosa... sono un po' in crisi!
Sul mio sito ho riportato l'esempio funzionante dell'help in linea, casomai
ti fossi trovato in crisi con la selezione dei file:
 
http://www.marcobortolani.it/icld/FindFirst.zip
In pratica esegui un ciclo repeat .. until per ciascun file della directory
selezionata che risponde ai criteri di selezione impostati:
  1. con i checkbox delle varie caratteristiche
  2. con i wildchar nel nome della directory (es. C:\*.* -> tutti i file 
     della root)
La FindFirst ritorna True se esiste almeno un file rispondente ai criteri
di selezione indicati e posiziona il cursore di scorrimento dei file (di
tipo TSearchRec) sul primo di questi; con la FindNext ti sposti poi sui
successivi, finchè ce ne sono.
Saluti
	Marco Bortolani
	info @ 
marcobortolani.it

 end;
A me il tuo codice va che è una meraviglia: magari controlla qual'è
effettivamente la directory di ricerca, cioè quello che c'è scritto nel
file ini. Se la chiave non esiste infatti viene impostata la variabile
directory a '': magari effettuare poi una ricerca su dirfil = '\*.xls' non
lo convince molto...


Ecco qua la stringa errata:
FileAttrs := FileAttrs + faAnyFile;
l'ho corretta cosě:
FileAttrs := faAnyFile;
Grazie per il vostro aiuto, ora so qualcosa di piů!! ;-)


 Dove sbaglio?
Forse sbagli nel confronto degli attributi...non ho provato il tuo codice,
ma che cercando per google con "delphi file count" ho trovato fra la prima
pagina di links tornata questo e l'ho confrontato col tuo: 
The following code evaluates all the files in C:\*.* and excludes
directories from that file count.
function TForm1.CountFiles : integer;
var
Rec : TSearchRec;
nFileCount : integer;
foo : string;
begin
nFileCount := 0;
if FindFirst('C:\*.*', faAnyFile, Rec) = 0 then
begin
repeat
// Exclude directories from the list of files.
if ((Rec.Attr and faDirectory) <> faDirectory) then
Inc(nFileCount);
until FindNext(Rec) <> 0;
FindClose(Rec);
end;
Result := nFileCount;
end;
-- 
Morde. 
M-List di icld: 
http://it.groups.yahoo.com/group/icld/

Peccato: per una volta è abbastanza chiara :-)
La guida l'ho guardata meglio e sono riuscito a far funzionare l'esempio 
riportato ma non riesco a modificarlo per i miei scopi...
Ad un bottone associo questa azione:
procedure TfrmMailGuida2.aclContaFileExecute(Sender: TObject);
var
  ini : TIniFile;
  directory : String;
  dirfil : String;
  sr : TSearchRec;
  FileAttrs, nFile : Integer;
begin
  nFile := 0;
  FileAttrs := FileAttrs + faAnyFile;
  ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini'));
  directory := ini.ReadString('FILE','Directory','');
  dirfil := directory+'\*.xls';
  if FindFirst(dirfil, FileAttrs, sr) = 0 then
    begin
      repeat
        if (sr.Attr and FileAttrs) = sr.Attr then
        begin
          nFile := nFile+1;
        end;
      until FindNext(sr) <> 0;
      FindClose(sr);
    end;
  lblTrovati.Caption := IntToStr(nFile);
end;
per un po' ha funzionato ma ora mi da 0 come risultato, eppure i file 
c'erano prima e ci sono ancora...
Dove sbaglio?
--- posted by geoForum on 
http://www.delphiedintorni.it