Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.06;
Скачать: CL | DM;

Вниз

По поводу условной компиляции   Найти похожие ветки 

 
KSergey ©   (2004-01-23 16:40) [0]

Например, имеем 2 модуля

unit M1; // модуль 1
uses ....TestMod, ..., M2;
...
end. // unit M1;

unit M2; // модуль 2
uses ....M1;
...
end. // unit M2;

Можно ли как-то (командами аля-препроцессор?) в модуле 2 определить, был ли в модуле 1 (куда включили этот 2) включен и модуль TestMod или не был?
Сразу оговорюсь, что TestMod - некий стандартный модуль, т.е. изменять его нельзя.

Вообще, если еще остались непонятности, опишу еще раз. Прямо на примере.
Пусть в модуле 2 (а это просто набор утилиток) есть некая ф-ция, которая работает с типом TField. Для этого в него надо включить и модуль Db. Однако, предположим некий проект, где работы с полями не ведется никакой, соответственно и ф-ций работы с полями и не требуется, т.е. и модуль Db не хочется тащить в проект, однако хочется использовать некие ф-ции из модуля 2.
Тогда было бы здорово написать что-то такое:

unit Modul2;

interface
uses ...,
$if_include_Db
Db,
$endif
...;

...
$if_include_Db
procedure Name1(AFld: TField);
$endif
....

implementation
...
$if_include_Db
procedure Name1(AFld: TField);
begin
...
end;
$endif
....


Т.е. если в модуле, куда включен этот Mod2 уже есть модуль Db - то и тут соотв. часть кода компилируется, а если не включен - то не компилируется и все довольны ;)
Возможно, можно проверить то, что некий тип, скажем, определен - не знаю, ну в общем как-то идентифицировать это.

Понимаю, что по уму нужно просто это все по разным юнитам разнести, но вдруг можно?
Ну а если нет - ну и ладно ;)


 
Sandman25 ©   (2004-01-23 16:48) [1]

Понимаю, что по уму нужно просто это все по разным юнитам разнести, но вдруг можно?

Сами же понимаете... Даже если можно, то лучше не нужно. А то привыкнете все свои функции в одном модуле описывать :)


 
MBo ©   (2004-01-23 17:02) [2]

А $DEFINE и $IFDEF не подходят?


 
KSergey ©   (2004-01-24 15:55) [3]

> MBo © (23.01.04 17:02) [2]
> А $DEFINE и $IFDEF не подходят?

А $DEFINE куда вставить? Я же говорю, проверяемый модуль - нелзя изменять...
А если не в него define - то куда?


 
KSergey ©   (2004-01-26 08:19) [4]

Значит никак?....



Страницы: 1 вся ветка

Текущий архив: 2004.02.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.024 c
1-16328
Крутыш
2004-01-24 23:13
2004.02.06
Послать сообщение mdichild-форме на восстановление.


3-16137
Ольга
2004-01-14 19:47
2004.02.06
dbgrid и заголовки к полям


1-16501
Sergioly
2004-01-27 14:30
2004.02.06
Как запустить дос-прогу без вывода ее окна в Delphi


1-16505
denis24
2004-01-27 13:03
2004.02.06
Кнопка mininize в заголовке формы


1-16426
WED
2004-01-20 10:14
2004.02.06
Почему не работает следующий код...