![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Dephi стирает {$IFDEF} [D2, D3, D4, D5, D6, D7, Win95/98, WinME, NT4, Win2k, WinXP]
BFG9k © (2005-10-13 14:47:00)Создаю пакет, в его коде пишу :
uses Unit2,Unit3,
{$IFDEF XXX}
Unit1 in 'PAS\Unit1.pas'
{$ENDIF}
;
После компиляции иногда {$IFDEF XXX} исчезает.
Вопрос: почему дельфи лазит своими грязными лапами в моих исходниках и как это отключить ?
BFG9k (2005-10-13 16:22:00) [1]Угу, осознал.
Reindeer Moss Eater (2005-10-13 16:21:00) [2]При необходимости изменить структуру модуля мне нужно изменять 10 dpk с 10 основными модулями для 10 пакетов.
Пакеты создаются один раз после чего оставляются в покое на тысячу лет.
Вся последующая правка происходит в одном модуле в одном месте один раз.
Впрочем что это я распыляюсь, давкай себе Ctrl F9 и шуруй переименовывать все свои 10 bpl по десять раз при каждой правке.
Удачи в благородном мартышкином труде!
BFG9k (2005-10-13 16:17:00) [3]Хотя можно сделать 10 dpk и один основной модуль, в котором и возиться с условной компиляцией. Видимо это имелось в виду...
BFG9k (2005-10-13 16:13:00) [4]dpk и еще один основной модуль. Они одинаковые для всех пакетов за исключением небольших различий, которые я хочу описать при помощи условной компиляции. При необходимости изменить структуру модуля мне нужно изменять 10 dpk с 10 основными модулями для 10 пакетов.
Еще можно унаследовать эти 10 модулей от одного основного. Но я посчитал, что нет нужды с этим возиться, так как структура модуля относительна простая.
Reindeer Moss Eater (2005-10-13 16:05:00) [5]Ну и чем эта чудная инженерская мысль лучше нескольких dpk?
BFG9k (2005-10-13 16:03:00) [6]Reindeer Moss Eater:
Почему это ? Имена тоже будут разные. Правда придется вводить их вручную. Можно ли и имя пакета определять с помощью IFDEF ?
Reindeer Moss Eater (2005-10-13 16:03:00) [7]>Способ №1 не подходит - я использую Search Path и т.д.
Способ №1 подходит точно так же как и все остальные.
Digitman (2005-10-13 16:02:00) [8]
> BFG9k © (13.10.05 15:56) [12]
> Пускай все "волшебным образом" появляется, до тех пор пока
> это реализованно корректно
здесь в корректности, надеюсь, нет сомнения ?
> "Волшебным образом" что-то должно исчезать, если
с какого перепугу-то это самое "если" ?
здесь ты пытаешься впереться в "волшебство" со своими правилами, коих среда не знает и знать не желает в дан.случае.
BFG9k (2005-10-13 16:01:00) [9]Reindeer Moss Eater:
Кажется способы 2 и 3 - это то, что мне нужно (особенно 2).
Способ №1 не подходит - я использую Search Path и т.д.
Спасибо за ответы без демагогии (к начинающим меня) ;-)
Reindeer Moss Eater (2005-10-13 16:01:00) [10]Поставил перед собой следующую задачу. Нужно сформировать несколько пакетов с похожей структурой, но включающие в себя разные модули.
Ты поставил перед собой дурную задачу.
В результате выполнения которой у тебя будут пакеты с одни именем, но различным содержимым.
Прекрасный и легкий путь сойти сума для специалистов техподдержки и самих юзеров.
BFG9k (2005-10-13 15:56:00) [11]Digitman:
Пускай все "волшебным образом" появляется, до тех пор пока это реализованно корректно. "Волшебным образом" что-то должно исчезать, если я прямо или косвенно это исключил. Надо признаться, что в данном случае имеет место не фича, а баг.
Это пакет. Поставил перед собой следующую задачу. Нужно сформировать несколько пакетов с похожей структурой, но включающие в себя разные модули. Структура описывается в одном файле (чтоб 10 раз не переписывать). В нем, а также в dpk, с помощью директив условной компиляции описывается, какие юниты подключать в зависимости от define.
Reindeer Moss Eater (2005-10-13 15:51:00) [12]Сам я предпочитаю первый способ.
При этом средой не создается файл мой_пакет.cfg который влияет на используемые директории.
Все нужные каталоги и опции я задаю в командной строке dcc32.
Reindeer Moss Eater (2005-10-13 15:46:00) [13]Как я могу сделать то же самое, используя pas-файл ?
способ номер один:
- оставить все как есть, но пакет собирать из командной строки и не открывать его в ide.
способ номер два:
-вставить в dpk {$I myuses.inc} и все шаманство с uses сделать в inc
способ номер три:
-в контейнс пакета оставить один файл, и в этом файле мудрить с uses (будет предупреждение компилятора, о том что модули импортированы в пакет неявно)
BFG9k (2005-10-13 15:39:00) [14]Lexer :
То же самое.
Насчет внесения запятой в {$IFDEF} : я так сделал намеренно. Если я забуду указать define - компилятор ругнется.
Reindeer Moss Eater:
Я немного ошибся в описании. Это не dpr, а dpk (пакет). Там не uses, а contains. Как я могу сделать то же самое, используя pas-файл ?
Digitman (2005-10-13 15:38:00) [15]
> BFG9k
и пусть тебя это не волнует вообще - если ты явно и безусловно включил в проект некий юнит, но никак не используешь инф-цию из него, то это никак не повлияет на размер исп.файла проекта ... если ты к этому ведешь вопрос ...
Digitman (2005-10-13 15:34:00) [16]
> программа должна работать под всеми этими ОС
да до программы-то еще и дело не дошло !)
ее ж еще скомпилировать неплохо было бы, перед тем как рассуждать о ее потенциальной работоспособности на той или иной платформе) .. а у тебя до компиляции еще и дело даже не дошло)
> Дополнение: {$IFDEF} стирается не после компиляции, а после
> того, как меняешь что-либо в опциях проекта
существенное, кстати, дополнение.
и это нормальная реакция среды.
ты же не удивляешься, что при манипуляции тобой в опциях проекта списком Auto-create Forms в dpr проекта волшебным образом появляются и исчезают строчки вида Application.CreateForm(..) ?
это "волшебство" ты воспринимаешь как вполне нормальное, ожидаемое и никак тебе не мешающее (скорее - помогающее), так почему же тебя раздражает то же "волшебство", но чуть выше по тексту dpr ?
Reindeer Moss Eater (2005-10-13 15:34:00) [17]Повторюсь.
Это давно известная фича.
Lexer (2005-10-13 15:32:00) [18]Скорее всего это глюк твоеё версии Delphi, у меня всё ok.
Кстати, если приведенный кусвок кода вырезан из программы, то он не рабочий. Что если дефайн рачен XXX?
переделай на это:
uses Unit2,Unit3
{$IFDEF XXX}
, Unit1 in 'PAS\Unit1.pas'
{$ENDIF}
;
Гаврила (2005-10-13 15:31:00) [19]Я бы не сказал, что это фича
Reindeer Moss Eater (2005-10-13 15:26:00) [20]Вопрос: почему дельфи лазит своими грязными лапами в моих исходниках и как это отключить ?
Среда не любит когда своими грязными лапами ты правишь dpr.
Это давно известная фича.
Используй *.pas