maison
Top.Mail.Ru Yandeks.Metrika
Forum: "Main";
Archive actuelle: 2002.01.08;
Télécharger: [xml.tar.bz2];

vers le bas

Référence de classe circulaire Trouver des branches similaires


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

Un tel problème
T1 = classe
F: T2;
fin;
T2 = classe
F: T1;
fin;
tellement résolu
T2 = classe;
T1 = classe
F: T2;
fin;
T2 = classe
F: T1;
fin;
Question: Existe-t-il une solution pour le cas où les classes T1 et T2
situé dans une unité différente "ah?
Je ne peux pas faire quelque chose: <



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

Non, bien sûr. Pourquoi

Vous pouvez uniquement déclarer un ancêtre de T2 dans le champ d'application de T1.



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

Une question généralement pas inactive.
Il serait souhaitable que les classes aient des liens mutuels, mais pour certaines raisons ne peuvent pas être placées dans un module - elles sont TForm.
Bien que je le fasse par un intermédiaire - une classe qui connaît les deux,
et chacun d'eux le connaît. À travers cet intermédiaire, ils ont accès les uns aux autres.
Jetez une petite idée de la connaissance directe des classes ci-dessus.
Eh bien, au moins un indice où creuser :)



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

Je ne peux pas dire exactement comment cela peut être fait dans Delphi, mais en C ++, il existe une chose telle que les classes amicales,
c'est-à-dire Les classes déclarées amicales ont accès à tous les champs (méthodes?) d’une autre classe, même ceux
dans la section Privat décrite. Je sais qu’à Delphes, toutes les classes situées dans une unité sont considérées comme conviviales, mais voici comment.
faire la même chose pour différentes unités ???




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

Le problème est que les classes doivent être décrites dans la section interface (en passant, l'accès aux champs privés, comme b, n'a pas été discuté), et les références circulaires dans cette section sont strictement interdites. La manière la plus correcte:

unité Unit1; interface utilise ; ; type TForm1 = classe (TForm) fldForm2: TForm; procedure doSomeThing; fin mise en oeuvre utilise Unit2; procédure TForm1.doSomeThing; commencer (fldForm2 en tant que TForm2) .TForm2OnlyProperty: = AnyValue; fldForm2.TFormProperty: = AnotherValue fin fin .

Et tout à fait pareil - Unit2, seulement un et deux endroits changent de place.



Pages: 1 branche entière

Forum: "Main";
Archive actuelle: 2002.01.08;
Télécharger: [xml.tar.bz2];

à l'étage









Mémoire: 0.82 MB
Heure: 0.037 c
1-22214
T2
2001-12-16 07:15
2002.01.08
BMP 2 RichEdit


3-21906
Yuri Zhukov
2001-11-21 09:40
2002.01.08
Oracle ADO vs DOA - fido7.ru.delphi.db


1-22155
Art
2001-12-20 16:32
2002.01.08
Verrouille le dossier!


3-21900
vain
2001-12-07 11:13
2002.01.08
TString et String


1-22147
vinni2000
2001-12-20 12:59
2002.01.08
Besoin d'un conseil sur RichEdit !!!!!!!!





afrikaans albanais Arabic arménien azerbaïdjanais basque Biélorusse Bulgare catalan Chinois simplifié) Chinois (traditionnel) croate Tchèque Danois Néerlandais English estonien Filipino Finlandais Français
galicien géorgien Allemand Grecque Créole haïtien hébreu Hindi Hongrois Islandais Indonesian irlandais Italien Japonais Coréen letton lituanien macédonien Malay maltais Norvégien
persan Polonais Portugais roumain Russe serbe Slovaque Slovène Espagnol Swahili Suédois Thai turc ukrainien Urdu vietnamien gallois yiddish bengali bosniaque
Cebuano espéranto gujarati Hause hmong Igbo Javanais Kannada Khmer lao latin maori Marathi mongol népalais punjabi somali tamil telugu yoruba
zoulou
Английский Français Allemand Italien Португальский Русский Espagnol