![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Директива $IFDEF [D5, Win2k]
first_may © (2006-11-08 11:54:00)Добрый день!
У меня есть некоторый модуль Test.pas, который я использую в нескольких проектах. В одном из проектов мне надо в модуль Test.pas подключит дополнительный модуль Proba.pas таким образом, что бы другие проекты нормально компилировались с учетом того, что в них нет этого Proba.pas. Я делаю так
implementation
{$IFDEF Proba.dcu}
uses Proba;
{$ENDIF}
...
{$IFDEF Proba.dcu}
... // здесь функция из модуля Proba.pas
{$ENDIF}
Правильно ли я делаю?
jack128 (2006-11-20 17:22:00) [1]first_may © (08.11.06 16:30) [38]
Теперь два проекта компилятся нормально, но функция из модуля Proba.pas не сработала даже если в
Project->Options->Directories/Conditionals->Conditional Defines
ничего не писать, написать Proba или Proba.dcu...
Ты должен пересобрать проэкт. Меню Project/Build Project1
Наиль (2006-11-20 16:59:00) [2]> Подарите ему метлу и закройте ветку. Ну, пожалуйста.
Если ветка растянется до 48 ответов.
Ты вышлю метлу и намажу древко суперклеем, чтоб печатать больше не смог.
> ничего не писать, написать Proba или Proba.dcu...
Всего три варианта, неужели тяжело самому проверить?
Или это мы за тебя делать должны?
Barloggg (2006-11-20 15:35:00) [3]взяли запарили человека.
один мой знакомый активно пользуется директивой {$I } это еще более изврат.
итак по прошествии полуторы недель после последнего ответа можно уже сказать правильный вариант?
может было нагляднее [36] расположить в одну строчку с uses?
Ketmar (2006-11-08 16:33:00) [4]>[39] Плохиш(c) 8-Nov-2006, 16:32
>Подарите ему метлу
фигу. нечего дарить, она денег стоит.
Плохиш (2006-11-08 16:32:00) [5]Подарите ему метлу и закройте ветку. Ну, пожалуйста.
first_may (2006-11-08 16:30:00) [6]Написал
uses MainVar, Base
{$IFDEF Proba}
,Proba
{$ENDIF}
;
Теперь два проекта компилятся нормально, но функция из модуля Proba.pas не сработала даже если в
Project->Options->Directories/Conditionals->Conditional Defines
ничего не писать, написать Proba или Proba.dcu...
evvcom (2006-11-08 16:23:00) [7]> [35] first_may © (08.11.06 16:19)
Покажи, что получилось после убирания директив.
> [36] Плохиш © (08.11.06 16:21)
Я так и знал!!! :-))))
Плохиш (2006-11-08 16:21:00) [8]
uses MainVar, Base
{$IFDEF Proba}
,Proba
{$ENDIF}
;
PS. Sorry, не сдержался.
first_may (2006-11-08 16:19:00) [9]Директивы условной компиляции убрал полностью из проекта.
Первый, где есть в проекте Proba.pas, скомпилился нормальна и функция из модуля Proba.pas сработала.
Второй сказал следующее
[Fatal Error] TorgOtd.dpr(57): File not found: 'Proba.dcu'
evvcom (2006-11-08 16:18:00) [10]> [32] first_may © (08.11.06 16:09)
Что тебе надо, все давно уже поняли. Идея того, что ты делаешь, верная, но ошибка в реализации, в синтаксисе, наконец. Делай, что тебе говорят, пока есть желание еще с тобой возиться, и ты поймешь, гдеты ошибаешься. Будешь упрямствовать, останешься со своей проблемкой один на один. А готовый ответ тебе чаще всего никто выкладывать на блюдце не будет.
evvcom (2006-11-08 16:14:00) [11]> [31] Плохиш © (08.11.06 16:06)
Да уж... :(
> [26] evvcom © (08.11.06 15:57)
> Попробуй условности убрать
Я имею ввиду, убери прямо из текста (временно, в качестве пошагового учебного задания) свои директивы условной компиляции, но только их, больше ничего не трогай! И попробуй скомпилить. А потом подумать.
first_may (2006-11-08 16:09:00) [12]Я извиняюсь конечно, может чего то не догоняю, но у меня следующая ситуация:
Test.pas я использую в двух программах. В одной, где используется Test.pas, надо в Test.pas подключит дополнительный модуль Proba.pas. А в другой программе модуль Proba.pas не нужен вообще. Как это сделать без дублирования файла Test.pas?
Плохиш (2006-11-08 16:06:00) [13]
> ИМХО, он этого пока не понял.
К сожалению, это самая малая часть того, что он не понял :-(
evvcom (2006-11-08 16:05:00) [14]> [28] first_may © (08.11.06 16:02)
> если условности уберу то один проект соберется, а второй
> нет
не соберется ни один проект!
evvcom (2006-11-08 16:04:00) [15]> [27] Плохиш © (08.11.06 16:00)
Возможно. Не пробовал. Нет у меня такой привычки точки в идентификаторах ставить. Думаю, не плохо будет и автора от этого отучить. Во всяком случае может хоть это заставит его понять, что связи между скомпилированным модулем proba.dcu и придуманным им идентификатором proba.dcu нет никакой совершенно. ИМХО, он этого пока не понял.
first_may (2006-11-08 16:02:00) [16]если условности уберу то один проект соберется, а второй нет
Плохиш (2006-11-08 16:00:00) [17]
> evvcom © (08.11.06 15:57) [26]
Точка там не мешает.
evvcom (2006-11-08 15:57:00) [18]Не-а.
Попробуй условности убрать, что получишь? И про .dcu почитай [16] наконец!
first_may (2006-11-08 15:54:00) [19]Надо вот так что ли
implementation
uses MainVar, Base;
{$IFDEF Proba.dcu}
Proba;
{$ENDIF}
evvcom (2006-11-08 15:48:00) [20]> [22] first_may © (08.11.06 15:45)
Тебе ошибки Плохиш жирным выделил. Или ты boldне различаешь?