Главная страница
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.036 c
3-16036
rika
2004-01-12 15:58
2004.02.06
Как вставить в текстовый файл инфу из БД?


3-16072
chtr
2004-01-12 05:04
2004.02.06
Какая строка отправляется на сервер?


1-16276
IgAn
2004-01-26 09:13
2004.02.06
изменение палитры


1-16292
Sash
2004-01-26 07:07
2004.02.06
Handle окна


3-16115
stud
2004-01-15 13:05
2004.02.06
возможно ли отображение в гриде вложенных таблиц