Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Self ist im Constructor nil (https://www.delphipraxis.net/174145-self-ist-im-constructor-nil.html)

phri 6. Apr 2013 16:27

Delphi-Version: 5

Self ist im Constructor nil
 
Wie im Titel beschrieben, rufe ich einen constructor auf und schon in dessen erster Zeile ist self=nil , was einen Zugriffsfehler zur Folge hat.

Delphi-Quellcode:
interface
type
  tzustand=(l,g,t);

  tknoten=class
    z:tzustand;
    farbe:integer;
    liste:tliste;
    constructor create;
    destructor destroy;
    procedure reparieren;
  end;

implementation

  constructor tknoten.create;
  Begin
    self.z:=l; //Hier erhalte ich immer eine EAccesViolation
    farbe:=0;
    liste:=nil;
  end;
Ich kann den Fehler einfach nicht finden. Daher wäre es nett, wenn ihr mir helfen könntet.

jbg 6. Apr 2013 16:30

AW: Self ist im Constructor nil
 
Wie rufst du denn den Konstruktor auf?

mkinzler 6. Apr 2013 16:30

AW: Self ist im Constructor nil
 
Delphi-Quellcode:
constructor tknoten.create;
Begin
    inherited;
    self.z:=l; //Hier erhalte ich immer eine EAccesViolation
    farbe:=0;
    liste:=nil;
end;

sx2008 6. Apr 2013 16:32

AW: Self ist im Constructor nil
 
Das liegt daran, wie du später den Konstruktor aufrufst:
Delphi-Quellcode:
var
  knoten : tknoten;
begin
  knoten.Create;  // FALSCH!

  knoten := tknoten.Create; // Richtig

phri 6. Apr 2013 16:39

AW: Self ist im Constructor nil
 
Delphi-Quellcode:
var k:tknoten

  if k=nil then k:=k.create
Ich bin über die Suche jeden Constructor Aufruf durchgeganen, und er ist immer wie oben.

mkinzler 6. Apr 2013 16:41

AW: Self ist im Constructor nil
 
Delphi-Quellcode:
if not Assigned( k) then k := TKnoten.Create;

Uwe Raabe 6. Apr 2013 16:52

AW: Self ist im Constructor nil
 
Zitat:

Zitat von phri (Beitrag 1210329)
Delphi-Quellcode:
var k:tknoten

  if k=nil then k:=k.create
Ich bin über die Suche jeden Constructor Aufruf durchgeganen, und er ist immer wie oben.

Dann ist er immer falsch! Markus zeigt wie es geht.

phri 6. Apr 2013 16:54

AW: Self ist im Constructor nil
 
Danke :oops: , an den anderen Stellen war er tknoten.create.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:35 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