Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Datenaustausch zwischen 2 Klassen


ralfos - Do 12.08.04 15:34
Titel: Datenaustausch zwischen 2 Klassen
Hallo!

Wie ist es möglich, Daten zwisch 2 Klassen auszutauschen? Das Problem darin besteht, dass die eine Klasse ein Property besitz und in dessen write-Methode auf die Methode einer anderen Klasse zugegriffen werden muss, die allerdings diese Klasse als Typ selbst benötigt.

Gibt es so eine Art Vor-Deklaration von Klassen, so dass man in beiden Klassen auf die komplette Struktur der jeweils anderen zugreifen kann?

Vielen dank im Voraus

Ralf


Moderiert von user profile iconKlabautermann: Topic aus Sonstiges verschoben am Fr 13.08.2004 um 07:34


maxk - Do 12.08.04 15:45

Hallo im :welcome: im Delphi-Forum!
Meinst du das?

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
type
 ClassB=class;
 ClassA=class(TObject);
  procedure Hallo;
  Class:ClassB;
 end;
 ClassB=class(TObject);
  procedure Hallo2;
 end;


ralfos - Do 12.08.04 19:29

Vielen dank erstmal!

Der Code ist leider nicht compilierbar, er bringt mir nur eine Fehlermeldung!


Wenn ich die beiden Classen in verschiedenen Units habe, ist sowas eventuell auch noch realisierbar, so einer art Header??


Danke

Ralf


Tino - Do 12.08.04 19:33

ralfos hat folgendes geschrieben:
Der Code ist leider nicht compilierbar, er bringt mir nur eine Fehlermeldung!

Das war ja auch nur ein Beispiel.

@maxk: Was hat das "Class:ClassB;" in der Klassendefinition von ClassA auf sich?

Gruß
Tino


maxk - Do 12.08.04 19:40

Stimmt, erstens müsste es über der Prozedur stehen, zweitens würde Delphi den Namen "Class" nicht als Bezeichner zulassen, naja. Ich wollte damit symbolisieren, dass man ClassB benutzten kann - eben nur ein Beispiel :wink:


ralfos - Do 12.08.04 21:47

Vielen Vielen Dank!!!!

Jetzt hat auch bei mir geklappt.

Gruß


ralfos - Do 12.08.04 22:12

Habe noch ein kleines Problem!


Wenn ich nun die beiden Klassen in 2 Units ausgelagert habe und trotzdem jeweils von beiden auf beide zugreifen will, wie ist dies dann möglich?

Ralf


BenBE - Do 12.08.04 22:27

Indem du beide von einer Oberklasse ableitest.

Funktioniert aber nur, wenn du dies ohne Zyklische Abhängigkeiten implementierst, d.h. du darfst in mindestens einer Unit die andere nicht im Interface-Bereich referenzieren. Delphi wird dir aber in dem Fall einen entsprechenden Fehler ausgeben ...


ralfos - Fr 13.08.04 07:26

Zitat:
Indem du beide von einer Oberklasse ableitest.


Wenn ich das mache, hat die Oberklasse einen anderen Namen, wenn ich nun diesen in einer der beiden Klassen einbinde, dann hab ich nur die Eigenschaften der Oberklasse?! Oder wie hast du das gemeint?