Главная страница
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.022 c
1-16296
XenonXX
2004-01-20 03:55
2004.02.06
Delphi глючит?!?


3-16155
Александр
2004-01-16 13:32
2004.02.06
Посоветуйте компонент!


6-16561
Виталя
2003-12-02 16:59
2004.02.06
---|Ветка была без названия|---


1-16238
Alexey_
2004-01-20 16:34
2004.02.06
Свой .mpq файл


6-16563
DillerXX
2003-12-01 20:13
2004.02.06
IP