घर
Top.Mail.Ru Yandeks.Metrika
मंच: "मुख्य";
वर्तमान संग्रह: 2002.01.08;
डाउनलोड करें: [xml.tar.bz2];

नीचे

परिपत्र वर्ग संदर्भ इसी तरह की शाखाएँ खोजें


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

ऐसी समस्या
T1=class
F:T2;
अंत;
T2=class
F:T1;
अंत;
решается так
T2=class;
T1=class
F:T2;
अंत;
T2=class
F:T1;
अंत;
Вопрос: Есть ли решение для случая, когда классы T1 и T2
расположены в разных unit"ах?
У меня чего-то не получается :<



Иван Шихалев   (2001-12-14 22:03) [1]

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

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



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

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



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

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




Иван Шихалев   (2001-12-17 19:17) [4]

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


unit Unit1;

interface

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

type
TForm1 = class(TForm)
fldForm2 :TForm;
procedure doSomeThing;
end;

implementation

uses
Unit2;

procedure TForm1.doSomeThing;
begin
(fldForm2 as TForm2).TForm2OnlyProperty := AnyValue;
fldForm2.TFormProperty := AnotherValue
end;

end.


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



पन्ने: 1 पूरी शाखा

मंच: "मुख्य";
वर्तमान संग्रह: 2002.01.08;
डाउनलोड करें: [xml.tar.bz2];

ऊपर









मेमोरी: 0.82 एमबी
समय: 0.035 c
14-22365
Ketmar
2001-10-16 06:22
2002.01.08
यहाँ यह दिलचस्प है: सिम्फ़रोपोल से, क्या मैं यहाँ अकेला हूँ?


4-22506
gluka
2001-11-06 00:16
2002.01.08
कैसे एक exe फ़ाइल में एक .dll फ़ाइल रटना?


14-22393
फेलिक्स
2001-11-08 21:54
2002.01.08
क्या करना है?


3-21953
Varik
2001-12-05 15:14
2002.01.08
प्रो रिकॉर्ड्स


14-22413
RUS
2001-11-11 21:27
2002.01.08
सीडी आरडब्ल्यू





अफ्रीकी अल्बानियन अरबी भाषा अर्मेनियाई आज़रबाइजानी बस्क बेलारूसी बल्गेरियाई कैटलन सरलीकृत चीनी) चीनी पारंपरिक) क्रोएशियाई चेक डेनिश डच अंग्रेज़ी एस्तोनियावासी फिलिपिनो फिनिश फ्रेंच
गैलिशियन् जॉर्जियाई जर्मन यूनानी हाईटियन यहूदी हिंदी हंगरी आइसलैंड का इन्डोनेशियाई आयरिश इतालवी जापानी कोरियाई लात्वीयावासी लिथुआनियाई मेसीडोनियन मलायी मोलतिज़ नार्वेजियन
फ़ारसी पोलिश पुर्तगाली रोमानियाई रूसी सर्बियाई स्लोवाक स्लोवेनियाई स्पेनिश स्वाहिली स्वीडिश थाई तुर्की यूक्रेनी उर्दू वियतनामी वेल्श यहूदी बंगाली बोस्नियाई
सिबुआनो एस्पेरांतो गुजराती हौसा हमोंग ईग्बो जावानीस कन्नड़ खमेर लाओ लैटिन माओरी मराठी मंगोलियन नेपाली पंजाबी सोमाली तामिल तेलुगु योरूबा
ज़ुलु
Английский Французский Немецкий Итальянский Португальский Русский Испанский