AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Pointer-Eigenschaft einer Klasse: Zugriffsverletzung
Thema durchsuchen
Ansicht
Themen-Optionen

Pointer-Eigenschaft einer Klasse: Zugriffsverletzung

Ein Thema von little-x · begonnen am 7. Nov 2007 · letzter Beitrag vom 7. Nov 2007
Antwort Antwort
Seite 2 von 2     12   
little-x

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

Re: Pointer-Eigenschaft einer Klasse: Zugriffsverletzung

  Alt 7. Nov 2007, 15:59
@Bommel

Ich bitte vielmals um Entschuldigung. Ich habe mich verguckt. Ich mache es so...

Delphi-Quellcode:
procedure irgendwas;

var vadder: TFahther;
    kind: TChild;
begin
  vadder:=TFahther.Create;
  // irgendwelche Werte an den Vater...

  kind:=TChild(Create); // <- also ich rufe NICHT den Vater-Consrtruktor auf. Diesen Aspekt hatte ich nicht bemerkt vorhin...
  kind.vater:=vadder;
end;
Womit wir wieder bei 0 anfangen.
Sorry dass Du das jetzt für die Katz erklärt hast...
manchmal machts mich mürbe
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
659 Beiträge
 
Delphi 12 Athens
 
#12

Re: Pointer-Eigenschaft einer Klasse: Zugriffsverletzung

  Alt 7. Nov 2007, 16:06
Ähmm...

Meinst du

kind:=TChild(Create); oder
kind:=TChild.Create; Ersteres wäre ja nett, weiß gerade nicht, was das eigentlich machen würde.

Könnte aber der Fehler sein, falls du es wirklich so machst... Ansonsten gehen mir auch die Ideen aus.

Bis denn
Bommel
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#13

Re: Pointer-Eigenschaft einer Klasse: Zugriffsverletzung

  Alt 7. Nov 2007, 16:22
1. @Object ist was anderes als Pointer(Object)!! Das erste ist die Adresse wo die Instanzenadresse liegt, das zweite ist die Instanzenadresse als Pointer. Letzteres ist das gesuchte, wenn du wirklich Pointer verwenden willst.
2. Wenn du nur Objekte in dieser Eigenschaft ablegen willst, dann nutze TObject als Typ. Damit kannst du auch zur Laufzeit abfragen, was denn nun hinterlegt ist für ein Objekt (IS Operator).
3. Wenn es sich nur um Vater und Kind handelt, dann könntest du im Kind direkt die Eigenschaft von TVater deklarieren (Voraussetzung: das zweite "type" Statement entfernen). Da du aber meintest, dass es unterschiedliche Typen geben kann für die Eigenschaft, dann müssten diese alle von TVater abgeleitet sein.
  Mit Zitat antworten Zitat
little-x

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

Re: Pointer-Eigenschaft einer Klasse: Zugriffsverletzung

  Alt 7. Nov 2007, 16:23
Auch hier wieder verguckt.
Natürlich ".Create".

Ok, ich mach schon einige Zeit mit Klassen rum und habe da ziemlich Routine, weshalb ich sowas dann nicht sehe.
Nur das mit den Zeigern DACHTE ich verstanden zu haben, aber dem ist scheinbar doch nicht so.

Habe inzwischen alles probiert: TypeCast, Properties etc....

Ohne Erfolg.
manchmal machts mich mürbe
  Mit Zitat antworten Zitat
little-x

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

Re: Pointer-Eigenschaft einer Klasse: Zugriffsverletzung

  Alt 7. Nov 2007, 16:25
@Muetze1

Danke für den Tipp, werde es sofort versuchen.
manchmal machts mich mürbe
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#16

Re: Pointer-Eigenschaft einer Klasse: Zugriffsverletzung

  Alt 7. Nov 2007, 16:42
Zitat von little-x:
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;
Die Idee mit dem Pointer ist ein Irrweg!!
Das Problem lässt sich einfach mit einer Vorwärtsdeklaration lösen:
Delphi-Quellcode:
Type
 TFather = class; // Vorwärtsdeklaration. Delphi weiss jetzt, es gibt die Klasse

  TChild = Class
    vorname: string;
    alter: integer;
    Vater: TFather; // ganz einfach so
  end;

  TFather = Class
    vorname: string;
    alter: integer;
  end;
In würde übrigens von TPersistent ableiten, damit man die Objekte auch kopieren kann.
Andreas
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#17

Re: Pointer-Eigenschaft einer Klasse: Zugriffsverletzung

  Alt 7. Nov 2007, 16:45
Wozu eine Forward Deklaration, wenn er im Vater nicht das Kind referenziert? Somit einfach den Vater vor dem Kind deklarieren. (siehe mein Beitrag zuvor, Punkt 3)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz