Dze je subor www.TrSek.com/cover/benkovic/find.pas
{ FIND.PAS                               Copyright (c) Jan Benkovic }
{ Nahrada prikazu find pre operacny system DOS. Prehladava disk     }
{ aby nasiel umiestnenie zadaneho suboru. Vysledok zapise do        }
{ textoveho suboru. Obsahuje prepinace. Ak sa nezada ziaden         }
{ prepinac zobrazi sa help programu.                                }
{                                                                   }
{ Datum:04.10.2001                             http://www.trsek.com }

{$I-}
uses crt,dos;
var
 hladane             : string;
 pom,Pocet_najdenych : longint;
 povod_adresar       : string;
 nazov,subor         : string;
 t                   : text;

procedure hladaj_subor(v_adresary:string);
var DirInfo : SearchRec;
    povod_adresar_1 : string;
 begin
  getdir(0,povod_adresar_1);
  chdir(v_adresary);
  FindFirst(subor, Anyfile, DirInfo);
  while DosError = 0 do
  begin
    assign(t,povod_adresar+'\'+nazov);
    append(t);
    inc(Pocet_najdenych);
    Writeln(v_adresary+'\'+DirInfo.Name);
    Writeln(t,v_adresary+'\'+DirInfo.Name);
    FindNext(DirInfo);
    close(t);
  end;
  chdir(povod_adresar_1);
 end;

procedure hladaj(cesta:string);
 var DirInfo: SearchRec;
 begin
  hladaj_subor(cesta);
  chdir(cesta);
  if IOResult <> 0 then Writeln(cesta+ ' Adresar je nepristupny')
  else
   begin
    FindFirst('*.*', Anyfile, DirInfo);
    while DosError = 0 do
       begin
        if (Dirinfo.Attr and Directory<>0) and (Dirinfo.Name<>'.') and (DirInfo.Name<>'..') then
         begin
          if cesta[length(cesta)]='\' then begin hladaj(cesta+Dirinfo.Name);end
          else begin hladaj(cesta+'\'+Dirinfo.Name);end;
          chdir(cesta);
         end;
        FindNext(DirInfo);
       end;
   end;
 end;

procedure help;
 begin
  Writeln('Program na prehladavanie disku : ');
  Writeln('Priklad : find [/s uklada] [/f subor] [/d adresar]');
  Writeln('/s ukladaj do zadaneho suboru');
  Writeln('/f hladaj subor ');
  Writeln('/d hladaj v adresari');
  Writeln('/? toto menu');
  Writeln;
  Writeln('Ak nezadas hodnoty za prepinacmi tak sa daju hodnoty DEFAULT.');
  Writeln('Aspon jeden z prepinacov musi byt zapnuty.');
  halt;
 end;

begin
 clrscr;
 getdir(0,povod_adresar);
 if paramcount=0 then begin Writeln('Chybaju VAM parametre !');help;halt;end;
 for pom:= 1 to paramcount do
  begin
   if (paramstr(pom)='/?') or (paramstr(pom)='help') then help;
   if paramstr(pom)='/f' then subor:=paramstr(pom+1);
   if paramstr(pom)='/d' then hladane:=paramstr(pom+1);
   if paramstr(pom)='/s' then nazov:=paramstr(pom+1);;
  end;
 if subor=''   then subor:='*.*';
 if hladane='' then hladane:=povod_adresar;
 if nazov=''   then nazov:='find';
 assign(t,nazov);
 rewrite(t);
 close(t);
 hladaj(hladane);
 Writeln;
 Writeln('Pocet najdenych :',pocet_najdenych);
 Writeln('koniec');
 chdir(povod_adresar);
 readkey;
end.

Copyrigth by Zdeno Sekerak 2007, http://www.trsek.com