Hvordan bruke FindFirst og FindNext med rekursjon, for å legge filnavn og stier til en stringlist 
 Hvordan lage en liste over filene i en mappe og dens undermapper 
 I det følgende kort veiledning, Jeg skal vise deg det grunnleggende for å skrive din egen " Finn filer " verktøy. Prosedyren FindFiles ( FilesList 
,  StartDir 
,  filmaske 
) lokaliserer filer i en gitt mappe og dens undermapper. Filene tilsvare en filmaske som du angir. 
 Parameter  FilesList 
 er en stringlist som den fulle baner av filene vil bli lagt til. I parameter  StartDir 
 du passerer start katalog (mappe), inkludert disken. Hvis du ønsker å søke en hel disk, angir du rotkatalogen på disken, for eksempel C: \\ eller A: \\ 
 I parameter  filmaske 
 du passerer navnet på filen for å finne, eller en fil maske med jokertegn (ved hjelp av * og?). Eksempler: 
 FindFiles (FilesList, 'c: \\', 'letter01.doc'); FindFiles (FilesList, 'c: \\', '* .dpr'); FindFiles (FilesList, 'd: \\ prosjekter', 'test ?? dpr.'); 
 Hvis du ønsker å prøve denne fremgangsmåten, legger følgende komponenter til en form: 
 
 to Edits (en for å starte katalog, en for masken ) 
 
 en knapp 
 
 a TLabel 
 
 a ListBox 
 kildekoden til FindFiles 
 I FindFiles vi bruker rekursjon: prosedyren kaller seg, for å finne de filene som ligger i underkataloger. 
 prosedyre FindFiles (FilesList: TStringList; StartDir, filmaske: string); Var SR: TSearchRec; DirList: TStringList; IsFound: Boolean; jeg: integer; begynne hvis StartDir [Lengde (StartDir)] < > '\\' Da StartDir: = StartDir + '\\'; //Lag en liste over filene i katalogen StartDir //ikke inkluderer kataloger! IsFound: = FindFirst (StartDir + filmaske, faAnyFile-faDirectory, SR) = 0; mens IsFound gjøre begynne FilesList.Add (StartDir + SR.Name); IsFound: = FindNext (SR) = 0; ende; FindClose (SR); //Lag en liste over underkataloger DirList: = TStringList.Create; IsFound: = FindFirst (StartDir + '. * *', FaAnyFile, SR) = 0; mens IsFound gjøre begynne if ((SR.Attr og faDirectory) < > 0) og (SR.Name [1] < > '.') så DirList.Add (StartDir + SR.Name); IsFound: = FindNext (SR) = 0; ende; FindClose (SR); //Scan listen over underkataloger rekursivt for i: = 0 til DirList.Count-en gjøre FindFiles (DirList [i], filmaske); DirList.Free; end;? 
 Hvordan bruke FindFiles 
 Før du ringer FindFiles, oppretter du en stringlist som FindFiles vil legge hele baner av filene som er funnet. Innholdet i stringlist kan vises i et tekstfelt, lagret på disken, uansett ... Til slutt, må du frigjøre dette stringlist 
 prosedyren TForm1.ButtonFindClick (Sender: TObject);. Var FilesList: TStringList; begynne FilesList: = TStringList.Create; prøv FindFiles (FilesList, EditStartDir.Text, EditFileMask.Text); ListBox1.Items.Assign (FilesList); LabelCount.Caption: = 'Filer funnet:' + IntToStr (FilesList.Count); //Annen behandling med listen over filer ... //... endelig FilesList.Free; end, end, 
  
Opplæring: Skriv din egen FindFiles tool
Next Page:Sentre en image 
			 
        
