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

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

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

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

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

Сообщение modjo »

В общем столкнулся с неожиданной проблемой. Для примера приведу код из хелпа (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"


Может кто объяснить что это такое?
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

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

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

uses 
  Windows, SysUtils;


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

лекарство (уточнять модуль):

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

  SysUtils.FindClose(Info);
modjo
новенький
Сообщения: 92
Зарегистрирован: 19.07.2009 15:52:10
Откуда: Москва

Сообщение modjo »

Интересно.

Веж живи, век учись...
Ответить