procedure Search(s: String);
var
N: Integer;
F: TSearchRec;
begin
if s = '' then Exit;
if s[Length(s)] <> '\' then s := s + '\';
N := FindFirst(s+'*.*',faAnyFile,F);
if N = 0 then
begin
while N = 0 do
begin
if not ((F.Name = '.') or (F.Name = '..')) then
begin
if (F.Attr and faDirectory) <> 0 then
Search(s + F.Name)
else
Memo1.Lines.Add(s + F.Name);
end;
N := FindNext(F);
end;
FindClose(F);
end;
end;