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

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

Использование двух классов друг другом. Классы в разных модулях [D7, WinXP]


Terasbetoni ©   (2008-09-08 19:27:00) 

Здравствуйте. Бывают такои случаи, когда в классе A есть поле типа B, и в классе B есть поле типа A (например, когда A - это система, а B - это элемент этой системы, который должен знать, какой системе он принадлежит). Тогда нужно применить такую запись:

type
 B=class;
 A=class
   F:B;
   //содержимое
 end;
 B=class
   //содержимое
 end;

А как это сделать, если A и B описаны в разных юнитах?


koha!   (2008-09-08 20:52:00) [1]


> Palladin ©   (08.09.08 20:44) [9]
> тебе нобелевку выдадут если в D7 откомпилируешь


А ну да, не посмотрел.... ну может стоит задуматься, что бы перебраться на среду по новее....


Palladin   (2008-09-08 20:44:00) [2]

тебе нобелевку выдадут если в D7 откомпилируешь


koha!   (2008-09-08 20:37:00) [3]

Я думаю обединение неме-спейс в одном
uses
 My.New.namespace in 'unit1.pas; unit2.pas';


Palladin   (2008-09-08 20:18:00) [4]


> Terasbetoni   (08.09.08 20:09) [5]

абсолютно


> Обошел. Но всё таки, это немного маразм.

это единственный выход, использовать общего родителя (TObject  в данном случае)


Terasbetoni   (2008-09-08 20:15:00) [5]

Сделал так
unit Unit1;
interface
uses Unit2;
type
 TClass1=class
   F:TClass2;
 end;
implementation

end.

Unit2;
interface
type
 TClass2=class
   F:TObject;
 end;
implementation
uses Unit1;
// сдесь использую преобразование F as TClass1
end.


Обошел. Но всё таки, это немного маразм.


Terasbetoni   (2008-09-08 20:09:00) [6]

Вы серьёзно?


Palladin   (2008-09-08 20:07:00) [7]


> А как это сделать, если A и B описаны в разных юнитах?

никак


Terasbetoni   (2008-09-08 19:51:00) [8]

really?

KilkennyCat ©   (08.09.08 19:42) [2]
поясните, пожалуйста

дополнительная информация: если в разделе uses в interface каждого модуля вписать имя другого модуля, то будет ошибка: Circular unit reference to '<element>'


KilkennyCat   (2008-09-08 19:42:00) [9]

uses?


Terasbetoni   (2008-09-08 19:29:00) [10]

Вернее вот так:

type
B=class;
A=class
  F:B;
  //содержимое
end;
B=class
  F:A
  //содержимое
end;


Наверх

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