Форум: "Основная";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];
ВнизПо поводу условной компиляции Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.03 c