tutor: skrive din egen findfiles redskab

, 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,  ;,;,,,,,



Previous:
Next Page: