Главная страница
    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.032 c
14-1088866556
DeadMeat
2004-07-03 18:55
2004.07.25
Часы


4-1086041485
Chlavik
2004-06-01 02:11
2004.07.25
WaitCommEvent


8-1083840133
lexx_av
2004-05-06 14:42
2004.07.25
Построение графика с помощью tchart


4-1086780359
RoadStar
2004-06-09 15:25
2004.07.25
Как рисовать на чужом окне?


1-1089543562
ltexcimer
2004-07-11 14:59
2004.07.25
максимальный размер переменной и запись в файл





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский