Совместимость модулей

Вопросы программирования на Free Pascal, использования компилятора и утилит.

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

Совместимость модулей

Сообщение modjo » 30.04.2010 00:26:25

В общем столкнулся с неожиданной проблемой. Для примера приведу код из хелпа (http://www.freepascal.org/docs-html/rtl/sysutils/findfirst.html):

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

Var Info : TSearchRec;
    Count : Longint;

Begin
  Count:=0;
  If FindFirst ('*',faAnyFile and faDirectory,Info)=0 then
    begin
    Repeat
      Inc(Count);
      With Info do
        begin
        If (Attr and faDirectory) = faDirectory then
          Write('Dir : ');
        Writeln (Name:40,Size:15);
        end;
    Until FindNext(info)<>0;
    end;
  FindClose(Info);                                 // ОШИБКА
  Writeln ('Finished search. Found ',Count,' matches');
End.


В таком варианте всё замечательно собирается. А вот если добавить модуль Windows выдаёт следующую ошибку:

weew.pas(20,17) Error: Incompatible type for arg no. 1: Got "TSearchRec", expected "LongWord"


Может кто объяснить что это такое?
modjo
новенький
 
Сообщения: 92
Зарегистрирован: 19.07.2009 15:52:10
Откуда: Москва

Re: Совместимость модулей

Сообщение скалогрыз » 30.04.2010 00:33:45

если добавить Windows первым модулем, то всё будет в шоколаде:
Код: Выделить всё
uses
  Windows, SysUtils;


а если Windows объявлен после SysUtils, то функции, объявленные, в Windows получают приоритет (при выборе по одинаковому имени).

лекарство (уточнять модуль):
Код: Выделить всё
  SysUtils.FindClose(Info);
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Совместимость модулей

Сообщение modjo » 30.04.2010 00:36:46

Интересно.

Веж живи, век учись...
modjo
новенький
 
Сообщения: 92
Зарегистрирован: 19.07.2009 15:52:10
Откуда: Москва


Вернуться в Free Pascal Compiler

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

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

Рейтинг@Mail.ru