Во-первых эту ошибку выдаёт отладчик (а не приложение), что ещё не означает что ошибка действительно имеется (хотя в твоём случае это скорее всего не так). Во-вторых в приведённом тобой коде нет ничего что вызывало бы это исключение, я только что специально у себя проверил на Delphi 7 и Delphi XE2.
И ещё, я уже много лет пользуюсь примерно таким вариантом поиска:
Код:
procedure FindFile(Dir: String);
var
SR: TSearchRec;
begin
Dir := IncludeTrailingPathDelimiter(Dir);
if FindFirst(Dir + '*.*', faAnyFile, SR) = NO_ERROR then
try
repeat
if (SR.Attr and faDirectory) = 0 then // Если это файл
begin
// Что-то делаем с файлом Dir+sr.Name
end else // Если же это каталог
begin
if (SR.Name <> '.') and (SR.Name <> '..') then FindFile(Dir + SR.Name);
end;
until FindNext(SR) <> NO_ERROR;
finally
FindClose(SR);
end;
end;