Autor Beitrag
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Fr 26.09.08 15:34 
Hallo,
ich habe folgendes Problem:

Erste Unit:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
Unit unKlasse1;
type TKlasse1=class
private
  FKlasse2:TKlasse2;
...


Zweite Unit:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
Unit unKlasse2;
type TKlasse2=class
private
  FKlasse1:TKlasse1;
...


Ich will also in jeder Klasse jeweils eine Referenz auf die andere Klasse Benutzen.
(Es handelt sich in meinem Fall um einen Thread, der Eigenschaften der Hauptklasse lesen soll. Diese Hauptklasse soll wiederum den Thread als referenz drin haben, um ihn z.B. Abzubrechen)
Wie kann ich das machen?
wenn ich die units gegenseitig in die Uses aufnehme kommt die Meldung "Überkreuzender Bezug 2er Units" logischerweise...
aber ich brauch ja die Unit in den uses weil er die TYpendeklaration sonst nicht kennt.

Gibts ne andere Möglichkeit, als die Typen alle in einer Unit zu deklarieren?


Zuletzt bearbeitet von Flamefire am Fr 26.09.08 16:14, insgesamt 1-mal bearbeitet
Boldar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Fr 26.09.08 15:54 
versuch mal die unit hinter implementation zu machen und eine Forward-deklaration zu machen!
Flamefire Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Fr 26.09.08 16:02 
klappt leider nur bei prozeduren und funktionen

Edit: es geht nichtmal wenn ich sie untereinander schreibe. (Also erst Klasse1 und in er selben unit im gleichem type-Abschnitt Klasse2 definiere)
Es kommt dann "Unbekannter Bezeichner TKlasse2" und "Bezeichner redefiniert TKlasse2"
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 26.09.08 16:14 
Ich fürchte, Du wirst beide Klassen in dieselbe Unit packen müssen und auch dann musst Du eine der beiden forward deklarieren, sonst geht es nicht.
footstep78
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Fr 26.09.08 16:36 
Innerhalb einer Unit geht es schon, für eine Klasse braucht man aber eine Vorwärtsdeklaration. Die sieht bei Klassen aber anders aus, als bei Prozeduren und Funktionen (also nicht mit dem Schlüsselwort forward).

Beispiel:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
type
TKlasse2=class;

TKlasse1=class
private  
  FKlasse2:TKlasse2; 
end;

TKlasse2=class  
private  
  FKlasse1:TKlasse1; 
end;
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 26.09.08 16:40 
Genauso hatte ich das gemeint ;)
Flamefire Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Sa 27.09.08 18:36 
Danke das klappt =)