Hallo,
angenommen ich haben 2 Klassen, die im Interface-Teil einer
Unit direkt untereinander stehen:
Delphi-Quellcode:
Type TFather = Class
vorname: string;
alter: integer;
end;
Type TChild = Class
vorname: string;
alter: integer;
Vater: Pointer; // <- hier kommt das Problem; hier soll der Papa rein.
end;
Im weiteren Verlauf erzeuge ich jeweils ein Objekt (Vater zuerst), mit Create und belege die Werte. Dabei kommt an einer Stelle eine Fehlermeldung:
Delphi-Quellcode:
VaterObject:= TFather.Create;
VaterObject.vornamename:= 'Horst';
VaterObject.alter:= 30;
ChildObject= TChild.Create;
VaterObject.vornamename:= 'Horstsohn';
VaterObject.alter:= 3;
ChildObject.Vater:= VaterObject; // <- Hier kommt die Fehlermeldung die ich nicht verstehe!
Und zwar kommt an der gekennzeichneten Stelle eine Speicher-Zugriffsverletzung.
Um folgendes Zitat vorweg zu nehmen:
Zitat:
Warum nimmst Du nicht TFather anstatt Pointer?
Das hier ist nur ein Beispiel. Mein Programm ist sehr viel komplexer, ich möchte niemanden verwirren. Ich weiß halt nicht immer den Datentyp, sondern nur dass es immer eine "Datenstruktur" ist (also Objekte irgendwelcher Klassen). Später kann ich diese mit
TClassname(Child.Vater).blabla
dereferenzieren.
Wo es super funktioniert, ist beim TTreeItem. Hier gibt es die Eigenschaft Data
ointer. Funktioniert einfandfrei:
tvitem.data:= xy;//beliebige Objektstruktur
Weiß jemand was ich hier falsch mache?
Grüße!