, hvordan man bruger findfirst og findnext med recursion for at tilføje filenames og veje til en stringlist,,,,,, hvordan der kan skabes en liste over dokumenter i en mappe og dets subfolders,,,,,,, er det i følgende kort lektion, jeg vil vise dig grundreglerne for at skrive din egen " finder filer " værktøj. , procedure, findfiles (, fileslist,, startdir,, filemask) finder filer i et givet mappe og dets subfolders.filerne, svarer til en filemask du angiver.,,, parameter, fileslist, er en stringlist, som alle veje af akter vil blive tilføjet, i parameter, startdir, du passerer fra directory (mappe), herunder de diskdrev.hvis de ønsker at søge en hel disk, angive de grundlæggende fortegnelse over disken, som f.eks. c:) eller en:.,,, på parameter, filemask, består du navnet på den fil at finde eller en fil maske med wildcards (ved hjælp af * og?). eksempler:,,, findfiles (fileslist, c) "," letter01. doc '), findfiles (fileslist, c:.', '*. dpr), findfiles (fileslist, d: \\ projekter "," test??. dpr);,,, hvis du ønsker at prøve denne procedure, tilføje følgende komponenter til form:,,,, to redigerer (en for begyndende fortegnelse, én for maske),,, en knap, en tlabel,,, en listbox,,,,, kildekoden af findfiles,,,,,,, findfiles, vi bruger recursion: proceduren kalder sig selv, for at finde de dokumenter, der er beliggende i underkataloger.,,,, procedure findfiles (fileslist: tstringlist;, startdir, filemask: string), var, sr: tsearchrec;,, dirlist: tstringlist;, isfound: boolean, jeg: heltal, begynder, , hvis startdir [længde (startdir)] < > '), "så, startdir: = startdir +');,, //bygge en liste over de filer i adresseregister startdir, //omfatter ikke de telefonbøger.,, IsFound :=, FindFirst(StartDir+FileMask, faAnyFile-faDirectory, SR) = 0;, while IsFound do begin, FilesList.Add(StartDir + SR.Name);, IsFound := FindNext(SR) = 0;, end;, FindClose(SR);,, //Build a list of subdirectories, DirList := TStringList.Create;, IsFound := FindFirst(StartDir+'*.*', faAnyFile, SR) = 0;, while IsFound do begin, if ((SR.Attr and faDirectory) <> 0) and, (SR.Name[1] <> '.') then, DirList.Add(StartDir + SR.Name);, IsFound := FindNext(SR) = 0;, end;, FindClose(SR);,, //Scan the list of subdirectories recursively, for i := 0 to DirList.Count-1 do, FindFiles(DirList[i], FileMask);,, DirList.Free;,end; , ,, ,,How to use findfiles?,,,,, før de ringer findfiles, skaber man et stringlist, som findfiles vil tilføje alle veje af de dokumenter, der er fundet.indholdet af stringlist kan vises i en listbox, reddede til disk, uanset hvad... endelig du har fri denne stringlist.,,,, procedure tform1. buttonfindclick (afsender: tobject), var, fileslist: tstringlist; begynder, fileslist: = tstringlist, . skaber. prøv, findfiles (fileslist, editstartdir. tekst, editfilemask. tekst), listbox1. poster. tildele (fileslist), labelcount. post: = filer: + inttostr (fileslist. tæl), //anden forarbejdning med listen over de filer, //... endelig, , fileslist. gratis, ;,;,,,,,
tutor: skrive din egen findfiles redskab
Next Page:koncentrerer sig et billede