FindClose и uses Windows

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
wwswowsogon
постоялец
Сообщения: 157
Зарегистрирован: 23.12.2008 19:41:37

FindClose и uses Windows

Сообщение wwswowsogon »

Доброго времени суток.
Есть процедура поиска:

Код: Выделить всё

procedure Tfc1.Find(FindPatch: string);
var Res: TSearchRec;    //Рез-т поиска
    FindRes: Integer;
    FindPatch1: string;
begin
  FindPatch := FindPatch + '\\';
  FindPatch1 := FindPatch;
  FindRes := FindFirst(FindPatch+'*.*', faAnyFile, Res);
  while FindRes = 0 do
   begin
     if ((Res.Attr{ and faDirectory}) = faDirectory) and ((Res.Name = '.') or (Res.Name = '..')) then
      begin
        FindRes := FindNext(Res);
        Continue;
      end;

      if ((Res.Attr{ and faDirectory}) = faDirectory) then
       begin
         Find(FindPatch + Res.Name{ + '\\'});
         FindPatch1 := FindPatch + Res.Name{ + '\\'};
         FindRes := FindNext(Res);
         Continue;
       end;

     FileList1.RowCount := FileList1.RowCount+1;
     FileList1.Cells[0, FileList1.RowCount-1] := AnsiToUTF8(Res.Name);
     FileList1.Cells[1, FileList1.RowCount-1] := AnsiToUTF8(FindPatch1);
     inc(kDir);
     Label2.Caption:='Найдено объектов: ' + IntToStr(kDir);
     FindRes := FindNext(Res);
   end;
  FindClose(Res);
end;


со стандартным разделом uses всё проходит хорошо.
Но стоит добавить модуль Windows, как ругается на FindClose(Res):

Incompatible types for aeg no. 1: Got "TSearchRec", expected "LongWord"
kipar
новенький
Сообщения: 78
Зарегистрирован: 04.03.2010 11:15:54

Сообщение kipar »

Да, в Windows объявлена процедура с тем же именем, что и в SysUtils.

1) Можно в списке uses поставить Windows в начале, а не в конце.
2) Или обращаться к FindClose как

Код: Выделить всё

SysUtils.FindClose(Res);
wwswowsogon
постоялец
Сообщения: 157
Зарегистрирован: 23.12.2008 19:41:37

Сообщение wwswowsogon »

Спасибо, попробуем. Но почему параметр-то разного типа у них?
Кстати, ссылку даёт именно на FindClose(F: TSearchRec).
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

wwswowsogon писал(а):Спасибо, попробуем. Но почему параметр-то разного типа у них?

Потому, что описание в разных модулях: в модуле Windows - заточка под синтаксис Си, а в модуле SysUtils - заточка под синтаксис Паскаля.
wwswowsogon
постоялец
Сообщения: 157
Зарегистрирован: 23.12.2008 19:41:37

Сообщение wwswowsogon »

Спасибо за помощь, теперь всё на ура работает:)
Ответить