casa

Forum: "Principale";
Archivio attuale: 2002.01.08;
Scarica: [xml.tar.bz2];
giù

Circular class reference Trova rami simili


oomneeq (2001-12-14 21:26) [0]

Такая проблема
TXNUMX=class
F:TXNUMX;
fine;
TXNUMX=class
F:TXNUMX;
fine;
решается так
TXNUMX=class;
TXNUMX=class
F:TXNUMX;
fine;
TXNUMX=class
F:TXNUMX;
fine;
Вопрос: Есть ли решение для случая, когда классы TXNUMX и TXNUMX
расположены в разных unit"ах?
У меня чего-то не получается :<



Ivan Shikhalev (2001-12-14 22:03) [1]

Нет, конечно. А зачем?

Можно лишь объявить предка TXNUMX в области видимости для TXNUMX.



oomneeq (2001-12-17 12:00) [2]

Вопрос вобщето не праздный.
Хочется, чтоб классы имели взаимоссылки друг на друга, но по некоторым соображениям не могут быть помещены в один модуль - они есть TForm.
Пока я это делаю через посредника - некий класс, который знает обоих,
а каждый из них знает его. Через этого посредника они и доступаются друг к дружке.
Подбросьте идейку непосредственного знакомства вышеуказанных классов.
Ну хоть намекните куды копать :)



Fellomena (2001-12-17 12:36) [3]

Не могу сказать точно как в Delphi это можно сделать, но в C++ есть такое понятие как дружественные классы,
т.е. классы, объявленные как дружественные имеют доступ ко всем полям (методам ?) другого класса, даже к тем, что
в Privat секции описанны. Я знаю, что в Delphi все классы, расположенные в одном юните считаются дружественными, но вот как
сделать тоже для разных юнитов ???



Ivan Shikhalev (2001-12-17 19:17) [4]

Проблема в том, что классы должны быть описаны в секции interface (кстати, доступ к приватным полям, вроде б, и не обсуждался), а циклические ссылки в этой секции категорически запрещены. Наиболее корректный способ:


unit UnitXNUMX;

interface

uses
<стандартный набор модулей>;

type
TFormXNUMX = class(TForm)
fldFormXNUMX :TForm;
procedure doSomeThing;
end;

implementation

uses
UnitXNUMX;

procedure TFormXNUMX.doSomeThing;
begin
(fldFormXNUMX as TFormXNUMX).TFormXNUMXOnlyProperty := AnyValue;
fldFormXNUMX.TFormProperty := AnotherValue
end;

end.


И совершенно аналогично - UnitXNUMX, только единичку с двоечкой местами поменять.





Pagine: 1 tutto il ramo

Forum: "Principale";
Archivio attuale: 2002.01.08;
Scarica: [xml.tar.bz2];

al piano di sopra

Top.Mail.Ru Yandeks.Metrika













Memoria: 0.78 MB
Ora: 0.029 c
1-22118
vlv
XNUMX-XNUMX-XNUMX XNUMX:XNUMX
2002.01.08
Componenti


14-22361
Nikolay
XNUMX-XNUMX-XNUMX XNUMX:XNUMX
2002.01.08
Да...............................


7-22446
Paradosso
XNUMX-XNUMX-XNUMX XNUMX:XNUMX
2002.01.08
Не пропускайте!!!Ну, очень нужно.


1-22212
T2
XNUMX-XNUMX-XNUMX XNUMX:XNUMX
2002.01.08
MMTOOLS CRACK


6-22307
Leviathan
XNUMX-XNUMX-XNUMX XNUMX:XNUMX
2002.01.08
NMFTP - отстой!!!!





afrikaans albanese Arabic armeno Azero basco bielorusso Bulgarian catalano Cinese (semplificato) Cinese (tradizionale) croato Ceco danese Dutch Inglese estone filippina Finnish Francese
galiziano georgiano Tedesco greco Creolo haitiano ebraico hindi ungherese islandese Indonesian irlandese Italiano Giapponese Korean lettone lituano macedone Malay maltese Norwegian
persiano polacco Portoghese rumeno Russian serbo Slovak sloveno Spagnolo swahili Swedish Thai turco ucraino Urdu vietnamita gallese yiddish bengalese bosniaco
Cebuano esperanto Gujarati Hausa Hmong Igbo giavanese kannada khmer lao latino maori marathi mongolo nepali punjabi somalo tamil telugu Yoruba
zulù
Английский Francese tedesco italiano portoghese russo spagnolo