>>430がミスってたので修正&余計なところを削除しました。ごめんささい
filelist は Tstringlist でグローバル変数。 

procedure TForm1.filesearch(ddir:string);
var
sr:TsearchRec;
res:integer;
i:integer;
ext:string;
begin
res:=FindFirst(ddir+'\*.*',faAnyFile,sr);
while res=0 do
 begin
 if not ((SR.Name='.') or (SR.Name='..')) then
  begin
    if ((SR.Attr and faDirectory) = faDirectory) then
      filesearch(ddir + '\' + SR.Name) //ディレクトリの場合再帰
    else
     begin
      ext:=LowerCase(extractfileext(sr.name));
      if (ext='.jpg') or (ext='.jpeg') or (ext='.bmp') then
       filelist.Add(ddir +'\'+sr.name);
    end;//else end
 end;//if end
 res:=FindNext(sr);
end;//while end
findclose(sr);

end;