![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Порядок в uses [D6, WinME, Win2k]
SergP. © (2005-07-13 16:41:00)В приведенном коде компилятор ругается на строку FindClose(z);
[Error] C412.dpr(56): Incompatible types: 'Cardinal' and 'TSearchRec'
program C412;
{$APPTYPE CONSOLE}
USES
sysUtils,Windows,comobj,activex,word2000;
....
var
z:TSearchRec;
...
FindClose(z);
...
но если поменять местами перечень модулей в uses на:
USES
Windows,sysUtils,comobj,activex,word2000;
то компилируется нормально.
Что это за фигня такая?
Просто Джо (2005-07-13 16:50:00) [1]
> [4] SergP. (13.07.05 16:49)
> Ну а зачем их одинаково назвали?
У тебя забыли спросить?
> Как указать из какого модуля брать требуемую функцию?
См. [3].
Digitman (2005-07-13 16:50:00) [2]
> Как указать из какого модуля брать требуемую функцию?
так и укажи : Unitname.IdentifierName
SergP. (2005-07-13 16:49:00) [3]
> Просто Джо © (13.07.05 16:43) [2]
> Windows.FindClose и SysUtils.FindClose - разные функции.
Ну а зачем их одинаково назвали?
> Digitman © (13.07.05 16:43) [1]
> а поменять - рука, конечно же, не поворачивается ..
Поворачивается... Но что будет если какая-нить другая функция тоже будет в обоих модулях, но нужна будет из sysutils?
Как указать из какого модуля брать требуемую функцию?
Просто Джо (2005-07-13 16:46:00) [4]Если не указано явно имя юнита перед функцией, используется тот, который идет в uses последним.
Например,
uses Windows, SysUtils;
...
FindClose; <- подразумевается SysUtils.FindClose
---
uses SysUtils,Windows;
...
FindClose; <- подразумевается Windows.FindClose
Если порядок юнитов менять нежелательно, указывай спецификатор юнита, например
SysUtils.FindClose
Digitman (2005-07-13 16:43:00) [5]а поменять - рука, конечно же, не поворачивается ..
Просто Джо (2005-07-13 16:43:00) [6]Windows.FindClose и SysUtils.FindClose - разные функции.