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

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

Взаимосвязь модулей приложения.


Zak3D[@Tm] ©   (2005-07-14 17:28:00) 

Наверно всем известна ситуация, когда в два модуля приложения ссылаются друг на друга(это простой случай), либо когда два модуля ссылаются друг на друга неявно(здесь отследить перекрытие сложнее).
Делфи ругается на такое перекрытие вот такими словами -
[Fatal Error] Unit.pas(5): Circular unit reference to 'Unit'
Так вот, я знаю что в С++ такая ситуация не возникает и там можно в одном модуле описать все остальные и потом только ссылаться на этот модуль.
Рельно ли реализовать такое в Делфи? Есть ли какая-либо альтернатива такому объявлению?.
Как бороться с такими ситуациями? (следить не предлагать, только таким методом и пользуюсь =))
Заранее благодярен.


Zak3D[@Tm]   (2005-07-15 12:08:00) [1]

Vadik
Ну в ошибке ведь есть ссылка на модуль виновный в перекрытии, и первым делом я смотрю туда =).
Т.к. компилирую приложение я часто, то мне не особо сложно отследить перекрытие, да и ведь я знаю структуру своей программы и поэтому при возникновении перекрытия сразу появляются какие-то мысли/догадки - где это могло произойти.
А способа с этим бороться как видишь из этой ветки я не нашёл =(.


Vadik   (2005-07-15 10:04:00) [2]

Zak3D[@Tm], а как ты отслеживаешь перекрытие? Я вот столкнулс с такой задачей и решил найти средство для поиска таких проблем. Если не найду, то придеся писать самому. Может что посоветуешь? в Model Makere есть такая возможность? Или где еще?


ANB   (2005-07-14 17:51:00) [3]

Если нет особой необходимости, лучше всегда подключать модули в разделе implementation. И вовремя выносить общие части по объявлению типов в отдельный модуль. Кстати, зацикливание инклудов в си иногда приводит к еще более печальным последствиям.


begin...end   (2005-07-14 17:32:00) [4]

Для устранения ошибки можно разделить объявления -- например, в первом модуле вписать второй модуль в список uses раздела interface, а во втором модуле ссылку на первый поместить в implementation. Но всё же лучше вынести общие части в отдельный модуль, на который и ссылаться в тех модулях, где это необходимо.


Наверх

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