Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];

Вниз

Взаимозависимые классы   Найти похожие ветки 

 
Kost   (2004-07-12 07:13) [0]

Ребята, помогите решить проблему:
Есть два класса, описанные в разных
модулях. Описание их в одном модуле
объективно невозможно.
Необходимо, чтобы они были взаимозависимы.
Как избавиться от ошибки "circular unit reference"?


 
Думкин ©   (2004-07-12 07:57) [1]

> Kost   (12.07.04 07:13)
> Описание их в одном модуле объективно невозможно.

Почему?


 
Kost ©   (2004-07-12 08:07) [2]

Потому что один из классов является формой.
И очень хочется использовать методы визуальной среды
размещения на форме компонентов.


 
evvcom ©   (2004-07-12 08:14) [3]


> Как избавиться от ошибки "circular unit reference"?

Если юзание одного из них переместить из интерфейсной части модуля в implementation uses, то ошибка исчезнет.


 
Kost ©   (2004-07-12 08:27) [4]

Перемещение невозможно. Классы-взаимозависимы!


 
Anatoly Podgoretsky ©   (2004-07-12 08:37) [5]

Kost ©   (12.07.04 08:07) [2]
И чем это противоречит объежинению в одном модуле?


 
ЮЮ ©   (2004-07-12 08:53) [6]

>Потому что один из классов является формой.

Тогда второиу не стоит знать о первом более того, что он TForm.
А если ему обязательно надо знать, что первый - TSuperPuperForm, то ему, однозначно, место в одном unit-е


 
Kost ©   (2004-07-12 08:59) [7]

У каждого из классов есть по внутренней форме - они понятно в одном модуле. Теперь каждый из классов хочет знать друг о друге.
Не буду же я в одном модуле лепить две формы и креэйтить их в ручную!


 
Anatoly Podgoretsky ©   (2004-07-12 09:05) [8]

Kost ©   (12.07.04 08:59) [7]
Нестыковочка, по твоим словам выходит, что у тебя не одна форма, а две или более в каждом модуле, тогда это означает, что они создаются вручную, на твоем жаргоне креэйтся.


 
Kost ©   (2004-07-12 09:11) [9]

Anatoly Podgoretsky ©  
Извините за настойчивость. А никак нельзя, чтобы кажадая форма как обычно была привязана к своему модулю, но как-то организовать, чтобы эта форма видела класс из другого модуля, а тот класс эту форму?


 
ЮЮ ©   (2004-07-12 09:20) [10]

См. evvcom ©   (12.07.04 08:14) [3]

В том случае, если видимости достаточно в методах, то перенести
в uses implementation-секции модуля


 
evvcom ©   (2004-07-12 09:28) [11]

А если видимость нужна также и в интерфейсной части, то в интерфейсной делать MyVar: TForm; далее [3]; а уже в реализации MyVar as TMySuperPuperForm


 
Программер ©   (2004-07-12 18:06) [12]

IMHO Ошибка проектирования надо читать рефакторинг Фаулера. Можно и попростому - юзай интерфейсы они рулез. Можешь связывать что хочешь с чем хочешь.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.035 c
6-1085565720
kalishenko
2004-05-26 14:02
2004.07.25
Пример UDP-сервера на API


6-1085374314
aper
2004-05-24 08:51
2004.07.25
как проверить доступна ли сетевая папка.


11-1077827486
ALeX.B.
2004-02-26 23:31
2004.07.25
Как получить доступ к каждому из 4-х полей в IPEdit?


3-1088630723
Zlod3y
2004-07-01 01:25
2004.07.25
Упаковка БД


1-1089269471
Iraizor
2004-07-08 10:51
2004.07.25
Глуповатый вопрос про SendStream & ProgressBar





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский