Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Директива $IFDEF [D5, Win2k]


Страницы:   1 2 3

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не различаешь?


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо