Hallo
nach längerem (d.h. meine oop kenntnisse sind sehr eingerostet) habe ich mich mal wieder an ein projekt gesetzt und bin gleich an einem problem bezüglich der aggregation hängengeblieben. ich weiß jetzt zwar wie man es umgeht, kann es mir nicht erklären:
also (stark vereinfacht):
angenommen in unit3 ist die klasse von b mit:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| TKlasseB = class procedure hi; end;
.....
procedure TKlasseB.hi; begin showmessage('Hello World'); end; |
in unit2 befindet sich die Klasse von a mit:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| TKlasseA = class procedure hi1; end;
var b : TKlasseB;
implementation
procedure TKlasseA.hi1; begin b.hi; end; |
das ganze wird in unit1 mit
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.Button1Click(Sender: TObject); begin Fa.hi1; end; |
aufgerufen, wobei Fa : TKlasseA; ein attribut von TForm1 ist.
Meine frage ist jetzt, warum das nicht funktiniert hat, als b ein attribut von TKlasseA war (genau wie es jetzt mit a in TForm1 ist), ob es jetzt unter var eine von der klasse unabhängige variable der unit ist und falls ja(was ich denke), wie es aussehen müsste, wenn TKlasseA und TKlasseB eine aggregation haben.
(ich habe den aufruf von b direkt über a und danach mit einer methode von a versucht, weil ich zuerst die sichtbarkeiten vermutete, hat aber auch nciht geklappt)
mfg Johnny
ps: achja, warum entfallen eigentlich die .create sachen und führen sogar zu Fehlermeldungen?
Moderiert von
Narses: Delphi-Tags hinzugefügtModeriert von
Narses: Topic aus Sonstiges (Delphi) verschoben am Di 16.03.2010 um 16:46