Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-16443
ag
2004-01-27 16:23
2004.02.06
из DLL в BMP


6-16574
__KLEVO__
2003-11-29 14:05
2004.02.06
TEmbedwb


14-16641
vidiv
2004-01-11 14:57
2004.02.06
DNS Server


14-16741
Skif
2004-01-12 17:46
2004.02.06
RxLib


14-16685
Blender
2004-01-17 13:15
2004.02.06
Internet Explorer





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский