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

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

ошибка Circular unit reference [D6, 95/98]


Страницы:   1 2

kilya ©   (2007-07-03 14:14:00) 

Здравствуйте. Вот такая проблема - Дельфи не дает двум модулям видеть друг друга, вроде с помощью директив это должно исправляться, сделал их даже в двух вариантах, но  Дельфи все равно не пропускает.
-------------- Unit1 ----------------
{$IFNDEF flag1}
{$DEFINE flag1}
unit Map;
interface
uses Graphics, Windows {$IFNDEF flag2}, Unit2{$ENDIF};
...
{$ENDIF}

-------------- Unit2 ----------------
{$IFNDEF flag2}
{$DEFINE flag2}
unit Unit2;
interface
{$IFNDEF flag1}uses Unit1;{$ENDIF}
...
{$ENDIF}

Выдается ошибка [Fatal Error] Unit1.pas: Circular unit reference to 'Unit1'


Сергей М.   (2007-07-03 14:26:00) [21]


> Дельфи не дает двум модулям видеть друг друга


Не вижу здесь никакого "друг друга".

Задумано тобой так - либо первый использует второй, либо второй использует первый, в зависимости от определенности flag1 или flag2.

Но flag1 не видим за пределами Unit2, а flag2 - соответственно за пределами Гтше1. Оттого и проблема.

Решается просто - убираются директивы DEFINE, а flag1 или flag2 указываются в conditional defines на уровне проекта в целом (см. свойства проекта)

т.е.

-------------- Unit1 ----------------
..
uses .. {$IFNDEF flag2}, Unit2{$ENDIF};
...

-------------- Unit2 ----------------
{$IFNDEF flag1}uses Unit1;{$ENDIF}


Dimaxx   (2007-07-03 14:25:00) [22]

А без DEFINE нормально работает? И зачем нужны они? Пусть себе ссылки на модули работают постоянно, а не только при наличии флагов.


Johnmen   (2007-07-03 14:21:00) [23]

Circular unit reference + F1


Страницы:   1 2

Наверх

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