dure scanDisk2(const rootpath:AnsiString); const {$IFDEF UNIX} pattern = '*'; {$ELSE} pattern = '*.*'; {$ENDIF} var PathTreePos,PathTreeCtr,PathTreeTop:LongWord; PathTree:Array of String; procedure scanner(const path:AnsiString); var SRec:TSearchRec; Err:Integer; begin Err:=FindFirst(path+pattern,faAnyFile {$IFDEF UNIX}+ faSymLink{$ENDIF},SRec); while Err=0 do begin if (SRec.Attr and faDirectory)=faDirectory then begin {$IFDEF UNIX} if SRec.mode and 61440 = 40960 then begin Err:=FindNext(SRec); Continue; end; {$ENDIF} if (SRec.Name='.') then begin end else if (SRec.Name='..') then begin end else begin inc(pathtreectr); if pathtreectr=pathtreetop-10 then begin inc(pathtreetop,1000); setlength(pathtree,pathtreetop); end; {$IFDEF UNIX} pathtree[pathtreectr-1]:=path+SRec.Name+'/'; {$ELSE} pathtree[pathtreectr-1]:=path+SRec.Name+'\'; {$ENDIF} end; end else begin System.Writeln(Path+SRec.Name); end; Err:=FindNext(SRec); End; FindClose(SRec); end; begin pathtreepos:=0; pathtreetop:=1000; pathtreectr:=1; setlength(pathtree,pathtreetop); pathtree[0]:=rootpath; while pathtreepos < pathtreectr do begin scanner(pathtree[pathtreepos]); inc(pathtreepos); end; setlength(pathtree,0); end;