Autor Beitrag
Tana´Ri
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 230



BeitragVerfasst: Do 11.12.03 13:28 
Hi,

ich hab mal ne Frage zum Verständnis bzw. Background, wenn ich innerhalb einer Funktion bzw. Procedure eine Instanz von einem Objekt habe wird dieser doch direkt bei der Funktionsimplementation Speicher zugewiesen, ist sie deshalb nicht NIL wenn ich sie darauf überprüfe bzw. assigned verwende ? bei globalen bzw. Objekt interna (wenn mans mal so ausdrücken darf) ist dies ja nicht der Fall.

bsp.:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Button1Click(Sender: TObject);
 var sl : TStringlist;
 begin
  if sl <> NIL then Caption := '<> NIL' else Caption:='NIL';
  { Caption = <>NIL }
end;

_________________
mfg
Tana´Ri
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Do 11.12.03 13:41 
Nein, dem Objekt wird kein Speicher zugewiesen! In Delphi sind Objekte immer nur Referenzen, enthalten also immer nur 4Bytes mit der Adresse. Und das eigentliche Objekte liegt dann eben an dieser Adresse. Wichtig dabei - dieses Objekt wird nicht automatisch erzeugt, das musst du tun!

Lokale Varibalen sollten immer initialisiert werden (außer Strings, da macht das Delphi intern automatisch), da sie sonst noch "Restmüll" (Daten die vorher am Stack gelegen sind) enthalten könnten. Daher kann es bei lokalen Objekten auch manchmal sein, dass diese eben nicht nil sind.

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!