Autor Beitrag
madbrain
Hält's aus hier
Beiträge: 6

Win 2000
Delphie 7 Enterprise
BeitragVerfasst: Mi 13.08.03 17:49 
Moin!

Kann mir jemand erklären, warum

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

i := TStringList.Create


fuktioniert, aber

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 226
Erhaltene Danke: 7



BeitragVerfasst: Mi 13.08.03 17:59 
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 531

WinXP
D5 Ent
BeitragVerfasst: 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.

_________________
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
madbrain Threadstarter
Hält's aus hier
Beiträge: 6

Win 2000
Delphie 7 Enterprise
BeitragVerfasst: Mi 13.08.03 23:12 
jo, danke
*schämfürnichtinderOHnachgeguckthab* :oops: