Рассмотрим два примера программы поиска файла по всему диску...

Рассмотрим два примера программы поиска файла по всему диску и даже по всем дискам с учетом маски:

Пример 1 Uses DOS,CRT; var Stop:boolean; Procedure FileFind(Dir,FindName : PathStr); Procedure SearchDir(Dir : PathStr); Var SRec : SearchRec; i:integer; begin if Stop then Exit; if Dir[Length(Dir)] '\' then Dir := Dir+'\'; ClrEol; Write(Dir,#13); if KeyPressed then Stop := ReadKey = #27; FindFirst(Dir + FindName, AnyFile, SRec); While DosError = 0 do begin With SRec do if Attr and (VolumeID + Directory) = 0 then WriteLn(Dir + Name); FindNext(SRec); end; FindFirst(Dir+'*.*', $17, SRec); While DosError = 0 do begin With SRec do if (Attr and Directory 0) and (Name[1] '.') then SearchDir(Dir+Name); FindNext(SRec); end; end; begin Stop:=False; SearchDir(Dir); end; function GetCurDrive: Char; var r: Registers; begin r.ah := $19; MSDOS(r); GetCurDrive := Char(r.al + $41); end; procedure SetCurDrive(Drive: Char); var r: Registers; begin r.ah := $0E; r.dl := Byte(Drive) - $41; MSDOS(r); end; procedure WalkDrives(Name : String); var SaveDrive, Drive, Ch: Char; begin if Pos('.', Name) = 0 then Name := Name + '*.*'; SaveDrive := GetCurDrive; for Ch := 'C' to 'Z' do begin SetCurDrive(Ch); Drive := GetCurDrive; if Drive = Ch then begin FileFind(Drive + ':\',Name); if Stop then Break; end; end; SetCurDrive(SaveDrive); end; begin FileFind('C:','*.bak'); {search *.bak in C:} WalkDrives('*.pas'); {search *.pas in all drives} end.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: