Тоже где-то вроде...
Код
Uses WinDos;
Type
TCallBack=Function(FileName:String):Boolean;
Function Browse(Root:String;Mask:String;CallBack:TCallBack):Boolean;
Var
q:TSearchRec;
Begin
Browse:=False;
If Root[Length(Root)] <> '\' Then
Root:=Root + '\';
If FindFirst(Root+Mask,faAnyFile,q) <> 0 Then
Exit;
Repeat
If q.Attrib And faDirectory <> 0 Then
Begin
If Not Browse(Root+q.Name,Mask,CallBack) Then
Exit
End
Else
If Not CallBack(Root+q.Name) Then
Exit
Until FindNext(q)<>0;
Browse:=True
End;
{Example}
Function PrintList(FileName:String):Boolean;
Begin
WriterLn(FileName);
PrintList:=True
End;
Begin
Browse("C:\windows\System32","*.Dll",PrintList)
End.
Возможны мелкие ошибки (т. к. без компилятора пишу), но алгоритм, я думаю, понятен, так что исправить их не составит труда.