FindClose и uses Windows

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

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

FindClose и uses Windows

Сообщение wwswowsogon » 08.07.2011 00:11:01

Доброго времени суток.
Есть процедура поиска:
Код: Выделить всё
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"
wwswowsogon
постоялец
 
Сообщения: 157
Зарегистрирован: 23.12.2008 20:41:37

Re: FindClose и uses Windows

Сообщение kipar » 08.07.2011 00:42:42

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

1) Можно в списке uses поставить Windows в начале, а не в конце.
2) Или обращаться к FindClose как
Код: Выделить всё
SysUtils.FindClose(Res);
kipar
новенький
 
Сообщения: 78
Зарегистрирован: 04.03.2010 12:15:54

Re: FindClose и uses Windows

Сообщение wwswowsogon » 08.07.2011 11:47:20

Спасибо, попробуем. Но почему параметр-то разного типа у них?
Кстати, ссылку даёт именно на FindClose(F: TSearchRec).
wwswowsogon
постоялец
 
Сообщения: 157
Зарегистрирован: 23.12.2008 20:41:37

Re: FindClose и uses Windows

Сообщение Vadim » 08.07.2011 13:16:49

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

Потому, что описание в разных модулях: в модуле Windows - заточка под синтаксис Си, а в модуле SysUtils - заточка под синтаксис Паскаля.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: FindClose и uses Windows

Сообщение wwswowsogon » 08.07.2011 23:18:29

Спасибо за помощь, теперь всё на ура работает:)
wwswowsogon
постоялец
 
Сообщения: 157
Зарегистрирован: 23.12.2008 20:41:37


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 237

Рейтинг@Mail.ru
cron