Использоване {$IFDEF
Модератор: Модераторы
Использоване {$IFDEF
Есть два проекта, назовем модуля главных форм Main1 и Main2. Есть модуль, работающий в нескольких проектах Unit1. Необходимо, чтобы в этом модуле для разных проектов выполнялись разные действия, в частности - вывод сообщения в статус бар.
Решение в лоб: Uses Main1 и Main2, в зависимости от какой-то переменной делаем нужное действие. Минус - в ехе попадает код обоих проектов.
Возникло желание воспользоватья директивами.
Но, чтобы директива была видна, она должна быть подключена в этот модуль. Т.е. опять надо подключать Main1 и Main2. При этом их директивы будут противоречить друг другу.
Есть еще вариант. Завести в Unit1 переменную типа Статус Бар и заполнять ее из Main1 и Main2. Однако на самом деле дейтвий больше, чем я привел, и переменных понадобится порядочно...
Может у кого-нить есть другие идеи?
Решение в лоб: Uses Main1 и Main2, в зависимости от какой-то переменной делаем нужное действие. Минус - в ехе попадает код обоих проектов.
Возникло желание воспользоватья директивами.
Но, чтобы директива была видна, она должна быть подключена в этот модуль. Т.е. опять надо подключать Main1 и Main2. При этом их директивы будут противоречить друг другу.
Есть еще вариант. Завести в Unit1 переменную типа Статус Бар и заполнять ее из Main1 и Main2. Однако на самом деле дейтвий больше, чем я привел, и переменных понадобится порядочно...
Может у кого-нить есть другие идеи?
- Attid
- долгожитель
- Сообщения: 2589
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
как-то все запутано расказал.
ну по директиве подключаешь модуль и по дерективе заполняешь тулбар, директиву передаешь при компиляции -dMYDir
желательно также делать вывод в разные папки, а то можешь напороться на момент когда в прект попадет Unit1.o скомпилированный с другой директивой.
ну по директиве подключаешь модуль и по дерективе заполняешь тулбар, директиву передаешь при компиляции -dMYDir
желательно также делать вывод в разные папки, а то можешь напороться на момент когда в прект попадет Unit1.o скомпилированный с другой директивой.
Для того, чтобы директива работала была видна - она должна быть задана в текущем модуле, или в подключенном. В модуле Uni1 я ее задать не могу - так как он используется в обоих проектах.
Если я ее задам в Main1 и Main2, то оба эти модуля необходимо подключить - что не даст мне никакого результата.
Добавлено спустя 4 минуты 48 секунд:
или я неправильно понял - директиву можно передать компилятору в настройкаъ проекта?
Если я ее задам в Main1 и Main2, то оба эти модуля необходимо подключить - что не даст мне никакого результата.
Добавлено спустя 4 минуты 48 секунд:
или я неправильно понял - директиву можно передать компилятору в настройкаъ проекта?
- *vmr
- постоялец
- Сообщения: 168
- Зарегистрирован: 08.01.2007 00:46:07
- Откуда: Киев
- Контактная информация:
tria писал(а):директиву можно передать компилятору в настройкаъ проекта?
Можно
А еще можно инклудить файл со всеми дефайнами:
Код: Выделить всё
unit Unit1;
{$i defines.inc} /// <--- подключаем все дефайны
interface
***
Инклудить не подойдет - одна процедура на оба проекта, в зависимости от проекта только малая часть действий процедуры.
Если можно, укажите пож. где конкретно в Лазаре в настройках проекта необходимо указывать директивы компилятору? И в каком формате?
Если можно, укажите пож. где конкретно в Лазаре в настройках проекта необходимо указывать директивы компилятору? И в каком формате?
в меню "проект\параметры компилятора..." потом вкладка "Другое" в редакторе "Параметры пользователя" вводим глобальные дефайны вида
где <MyName> это имя директивы.
Код: Выделить всё
-d<MyName>Понял, спасибо, буду пробовать
- Attid
- долгожитель
- Сообщения: 2589
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
tria писал(а):или я неправильно понял
я тоже самое и сказал =), только советую там в настроить "каталог вывода модулей" разный для обих проектов, а то можешь наступить на грабли.
Attid писал(а):tria писал(а):или я неправильно понял
я тоже самое и сказал =), только советую там в настроить "каталог вывода модулей" разный для обих проектов, а то можешь наступить на грабли.
Ну, с этим сложнее. Этот каталог совпадает с выводом ехе файлов. А они у меня лежат в одном каталоге - там еще с десяток файлов, используемых обоими проектами.
Было бы хорошо, *.ppu и *.o складывать где-то отдельно, а *.ехе отдельно. Но, насколько я помню, это невозможно.
Приходится при открытии проекта первым делом выполнять "собрать все"...
- Attid
- долгожитель
- Сообщения: 2589
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
tria писал(а):Было бы хорошо, *.ppu и *.o складывать где-то отдельно, а *.ехе отдельно. Но, насколько я помню, это невозможно.
Приходится при открытии проекта первым делом выполнять "собрать все"...
настройками лазаря не возможно, только если батником собирать как я =)
хотя возможно и в лазаре можно если прописать пользовательский параметр -obin/myprog.exe (покласть myprog.exe в каталог bin относительно исходников)
Всё это возможно и делается очень легко, иначе смутно себе представляю, как можно было бы работать с загружаемыми библиотеками...
