Newsgroup: it.comp.lang.delphi
Titolo: Find

Ciao Ragazzi,
volevo creare un programma che permette di:
- cercare files con determinate estensioni (come i .tmp ecc..);
- visualizzarne le proprietą (dimensione, percorso, ecc...);
- cancellare i file selezionati.
Quali componenti dovrei utilizzare?
Grazie.

 Quali componenti dovrei utilizzare?
nessun componente.
Ti bastano delle funzioni di ricerca dei file. Ovviamente se vuoi ricercarli
in tutto il disco, devi creare una procedura che grazie ad un sistema
ricorsivo utilizza le funzioni FindFirst e FindNext per trovare i file.
Questo è un sistema.
Poi per visualizzare le proprietà, è ancora più semplice.
Il percorso lo hai già grazie alla ricerca.
La dimensione e tutto ciò che ti serve, te lo fornisce sempre la funzione di
ricerca FindFirst, tramite il secondo parametro di tipo TSearchRec così
rappresentato:
TSearchRec = record
  Time: Integer;
  Size: Integer;
  Attr: Integer;
  Name: TFileName;
  ExcludeAttr: Integer;
  FindHandle: THandle;
  FindData: TWin32FindData;
end;
Vabbè, questo che ti ho detto è solo un sistema, ma ce ne sono altri....non
è difficile.
Ah.....per cancellare un file, puoi usare la "DeleteFile".
Ti saluto...ciao !!
Antonio Tarolla

Per quanto riguarda la ricerca ricorsiva di files e cartelle (confermo
quanto dice Antonio), anche a me pare un buon sistema.
Due parole sull'esempio qui sotto:
Lo utilizzo per caricare delle directories in un TreeView; a partire da un
path specifico.
Per ogni nodo del TV, creo una TStringList e la memorizzo sul campo Data del
TTreeNode.
Poi ci memorizzo l'elenco dei files presenti sul nodo.
Nel programma originale questi dati vengono letti e visualizzati su di un
ListView ogni volta che sul TV seleziono un nodo, in modo da ottenere nè più
nè meno quello che è il 'gestione risorse'.
Se ti serve tutto il prg, fammi sapere.
Ciao.
//==========================================================================
====
procedure TElencoCdFm.CaricaAlbero(aPath :string);
//==========================================================================
====
var
 sr  :TSearchRec;
 Node :TTreeNode;
begin
 TV.Items.BeginUpdate;
 if FindFirst(aPath+'\*.*', faAnyFile, sr) = 0 then begin
  Node := TV.Items.AddChild(TV.Items[0], aPath);
      Node.Text := aPath;
    RecurseDir(aPath, sr, Node);
   end;
 TV.Items.EndUpdate;
end;
//==========================================================================
====
procedure TElencoCdFm.RecurseDir(path :string; sr :TSearchRec; Parent
:TTreeNode);
//==========================================================================
====
var
    ChildSr :TSearchRec;
    Node  :TTreeNode;
    List  :TStringList;
begin
    repeat
//      StatusBar1.SimpleText := Path;
//    Application.ProcessMessages;
    // non considero i nomi di files della directory corrente (.) e
precedente (..)
    if(Copy(Sr.Name,1,1)<>'.') then
        // Se ho una directory, ci entro
        if((sr.Attr and faDirectory) = faDirectory) then begin
            // Creo la stringlist che conterrà i nomi dei files
            List := TStringList.Create;
            Node := TV.Items.AddChildObject(Parent, Sr.Name, List);
            Node.ImageIndex := 0;        // immagine per la cartella chiusa
            Node.SelectedIndex := 1;    // immagine per la cartella aperta
            if FindFirst(path+'\'+Sr.Name+'\*.*', faAnyFile, ChildSr) = 0
then
                RecurseDir(path+'\'+Sr.Name, ChildSr, Node);
        end
        // Altrimenti aggiungo il file alla stringlist
        else begin
            if Assigned(Parent.Data) then begin
                TStringList(Parent.Data).Add(
                    Sr.Name+'|'+                // Nome completo del file
                    IntToStr(Sr.Size)+'|'+    // Dimensione
                    IntToStr(Sr.Time)        // Data/ora di creazione
                );
            end;
    end;
    until FindNext(Sr) <> 0;
    FindClose(Sr);
end;

Se vedi nell'esempio di delphi dal nome Virtual ListView,
trovi uno splendido esempio di utilizzo da una app
delphi della shell di Windows.
Questo esempio lo trovi nella cartella degli esempi
forniti con delphi.
Ovviamente, usando la shell, puoi fare tutto cio che fa
la shell stessa.
Bye
AS
"Se è Microsoft non funziona"
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG