Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Variable.Create vs Variable := Typ.Create


madbrain - Mi 13.08.03 17:49
Titel: Variable.Create vs Variable := Typ.Create
Moin!

Kann mir jemand erklären, warum


Quelltext
1:
2:
3:
4:
var
  i  : TStringList;

i := TStringList.Create


fuktioniert, aber


Quelltext
1:
2:
3:
4:
var
  i  : TStringList;

i.create


nicht??

sobald ich "i." eingeben, bietet mir die Programmierhilfe "Create" an.

allerdings gibts dabei letztendlich nur Zugriffsverletzungen (wenn man i den auch benutzt...).

Das Beispiel bezieht sich nich nur auf TStringList, sondern eigentlich auf alle Typen mit einen Constructor.

Thx


Tryer - Mi 13.08.03 17:59
Titel: Re: Variable.Create vs Variable := Typ.Create
Die Onlinehilfe zu contructor hat folgendes geschrieben:
(..)
Obwohl die Deklaration keinen Rückgabewert enthält, gibt ein Konstruktor immer einen Verweis auf das Objekt zurück, das er erstellt bzw. in dem er aufgerufen wird.
(..)
Wenn Sie einen Konstruktor mit einer Objektreferenz (anstatt mit einer Klassenreferenz) aufrufen, wird kein Objekt erstellt. Statt dessen werden wie bei einer normalen Routine die angegebenen Anweisungen mit dem Objekt ausgeführt, und es wird eine Referenz auf das Objekt zurückgegeben. Beim Aufruf mit einer Objektreferenz wird normalerweise der geerbte Konstruktor mit inherited ausgeführt.


MfG,
Tryer


UC-Chewie - Mi 13.08.03 19:04

Überleg doch mal: Deine Objektinstanz wird erst erzeugt, nachdem Create aufgerufen wurde. Du lannst keine Methode eines nicht existierenden Objekts aufrufen.


madbrain - Mi 13.08.03 23:12

jo, danke
*schämfürnichtinderOHnachgeguckthab* :oops: