Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Область видимости


Автор: ivan219 29.12.2007, 19:48
Есть 2 Unit A, B в Unit B; есть тип TB который определён под implementation возможноли получить доступ к этому типу из под Unit A;???
Код

unit A;
.
.
type
 TA=class
  B: TB;
 end;
.
.
implementation
.
.
end.

unit B;
.
.
implementation
.
.
type
 TB=class;
.
.
end.

Автор: Alexeis 30.12.2007, 01:35
  Тут несколько вариантов. Либо есть опережающее описание класса в интерфейсной части, либо получать доступ в классу TB через его предка, объявленного в интерфейсной части, например мы получаем доступ к TMemoStrings через предка TStrings. 

Автор: ivan219 30.12.2007, 11:59
Цитата(Alexeis @  30.12.2007,  01:35 Найти цитируемый пост)
Либо есть опережающее описание класса в интерфейсной части

Нет такого.
А если был то как сделать???
Цитата(Alexeis @  30.12.2007,  01:35 Найти цитируемый пост)
либо получать доступ в классу TB через его предка

 smile 

Автор: Alexeis 30.12.2007, 13:03
Умеешь же получать доступ к строкам мемы. Вот так и пользоваться. А создается он вот так.

Код

constructor TCustomMemo.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
 ................
  FLines := TMemoStrings.Create;
  TMemoStrings(FLines).Memo := Self;
.........................
end;

Автор: ivan219 30.12.2007, 15:25
 smile не понял как я могу обявить 'TB.Create' если его не видно smile 

Автор: Alexeis 30.12.2007, 16:33
Цитата(ivan219 @  30.12.2007,  15:25 Найти цитируемый пост)
не понял как я могу обявить 'TB.Create' если его не видно

  Никак. Это может сделать любая из функций находящаяся в секции Implementation модуля B, но она должна вернуть указатель на объект. Если такой функции там нет, то остается только  smile 

Автор: ivan219 30.12.2007, 21:06
Печально :(

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)