Nieprawidłowy typ danych w FindClose (czyja wina)

0

Witam.
Mam dość dziwny problem taka prosta procedura szukania plików i wywala błąd

var
 SR: TSearchRec;
 F : Integer;
 Dir:string;
begin
 if Path[Length(Path)] <> '\' then Path:=Path+'\';
 if not DirectoryExists(Path) then begin
  //## TODO - Log
 end else begin
  F:=FindFirst(Dir+'*.*',faAnyFile,SR);
  while (F = 0) do begin
   DoSom(Dir+sr.Name);
   F:=FindNext(SR);
  end;
  FindClose(SR);
 end;
end;

I wywala się przy kompilacji że niby [DCC Error] demo.pas(111): E2010 Incompatible types: 'Cardinal' and 'TSearchRec'
Jak paczałem do kodów to FindClose przyjmuje parametr THandle, dziwne bo to jest standardowy kod, którego kopii jest nie zliczona ilość i powinno działać, a w Windows.pas nie grzebałem jak by ktoś mugł sprawdzić u siebie. Niby mugłbym zmienić to sobie ale mogą się cuda dziać więc chciałbym się upewnić czy to jednak u mnie jest coś magicznego. Mam D2k7

2

SysUtils.FindClose(SR); - lub przestaw SysUtils po Windows na liście uses.

0

FindClose - na pewno przyjmuje THandle, a nie TSearchRec?

0

Faktycznie działa, jak zasysał dane z Windows to był THandle a z SysUtils parametr dostaje TSearchRec.
Wielkie dzięki za pomoc.

0

Zależy na jakim IDE się pracuje. Bo w starszych wersjach Delphi był problem z używaniem TSearchRec i zdaje się faAnyFile. Nieraz źle zwracało rezultaty. Najwygodniej i najprościej według mnie zrobić takie szukanie właśnie z użyciem funkcji WinAPI. Większe możliwości, brak problemów, a i WinAPI imo rulez ;P

1 użytkowników online, w tym zalogowanych: 0, gości: 1