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

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

Необходимость взаимного использования модулей


Juice ©   (2005-07-19 20:06:00) 

Есть 2 модуля, первый - модуль формы (fm_unit), а второй модуль содержит код потока (thread_unit). Причем есть необходимость взаимного использования:

TQueryThread = class(TThread)
public
 form : TMyForm;

и

TMyFomr = class( TForm)
public
  thread : TMyThread;

Что вынуждает в разделе uses модуля fm_unit прописать thread_unit и наоборот, в uses модуля thread_unit прописать fm_unit. Получается Circular unit reference to ...
???


REA   (2005-07-20 11:02:00) [1]

1) вынести часть в третий юнит
2) использовать переменные с обычными классами (в т.ч. TForm) - что по сути сводится к (1)


Юрий Зотов   (2005-07-20 05:27:00) [2]

> Juice ©   (19.07.05 20:06)

Как это ни может показаться странным, но совет [4] очень даже верный. Скажем, можно включить поток в юнит формы.

Другой вариант - делать более общие ссылки. Например:
Не form: TMyForm, а form: TForm.
Или не thread: TMyThread, а thread: TThread.

И потом пользуемся приведением типов (там, где потребуется).

Вот два варианта. Выбирать - Вам.


Anatoly Podgoretsky   (2005-07-19 20:31:00) [3]

Меняй дизайн


Juice   (2005-07-19 20:20:00) [4]

Ага, а описывать класс TMyForm тоже в разделе implementation ? Так не прокатит.


Lexer   (2005-07-19 20:16:00) [5]

Sory, так:
1.
unit thread_unit
interface
fm_unit


2.
unit fm_unit
implementation
thread_unit


lexer   (2005-07-19 20:14:00) [6]

1.
unit thread_unit
interface
fm_unit


2.
unit thread_unit
implementation
fm_unit


Наверх

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