Einzelnen Beitrag anzeigen

little-x

Registriert seit: 13. Apr 2007
Ort: Brandenburg
60 Beiträge
 
Delphi 6 Enterprise
 
#1

Pointer-Eigenschaft einer Klasse: Zugriffsverletzung

  Alt 7. Nov 2007, 15:14
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 Dataointer. Funktioniert einfandfrei:
tvitem.data:= xy;//beliebige Objektstruktur Weiß jemand was ich hier falsch mache?

Grüße!
manchmal machts mich mürbe
  Mit Zitat antworten Zitat