Autor Beitrag
ShadowThief
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 278



BeitragVerfasst: So 28.09.03 12:45 
hallo,

ich mach grad eine unit, die zwei klassen beinhaltet, jetzt möchte ich die zweite klasse in der ersten klasse verwenden, das geht jedoch nicht, weil die zweite klasse ja weiter unten steht und sie deshalb in der ersten klase noch nicht bekannt ist.

ich könnte jetzt natürlich die beiden klassen vertauschen, dann würde es gehn. dies möchte ich jedoch nicht tun. gibt es eine andere lösung?

Moderiert von user profile iconTino: Überflüssige Absätze entfernt.
ShadowThief Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 278



BeitragVerfasst: So 28.09.03 13:00 
ich habs jetzt doch noch selbst gefunden. es geht folgendermaßen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
type
TSecondClass = class;
TFirstClass = class
  myobj: TSecondClass
end;
TSecondClass = class
  value: integer;
end;


ich bin deshalb nicht draufgekommen, weil ich es so probiert habe:

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

type
TFirstClass = class
  myobj: TSecondClass
end;

type
TSecondClass = class
  value: integer;
end;


so funktioniert es jedoch nicht. man darf das type nur einmal schreiben.

shadow.
UC-Chewie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 531

WinXP
D5 Ent
BeitragVerfasst: So 28.09.03 13:52 
ShadowThief hat folgendes geschrieben:

so funktioniert es jedoch nicht. man darf das type nur einmal schreiben.


Nicht grundaätzlich. Du kannst beliebig viele Type-Abschnitte haben.
Dass es in diesem Fall nicht funktioniert, liegt wohl daran, dass die Prototyp-Deklartion und die eigentliche Deklaration von TSecondClass sich in zwei unterschiedlichen Blöcken befänden, was wohl nicht geht
Das ist ja genauso wie bei Typ-Referenzen:

Folgendes funktioniert:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
type
  PMyRecord = ^TMyRecord;
  TMyRecord = record
    sHelp: String[255];
  end;


Und folgendes nicht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
type
  PMyRecord = ^TMyRecord;

type
  TMyRecord = record
    sHelp: String[255];
  end;

_________________
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
ShadowThief Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 278



BeitragVerfasst: So 28.09.03 14:38 
das hab ich gemeint, in diesem fall darf man es nur einmal schreiben.