Hi
Ich bin neu hier und fange gleich mit einer Frage an *ggg*
(hoffe das es mein Problem nicht schon mal gab. Ich hab gesucht aber ich wusste nicht so wirklich wonach ich suchen sollte. Das gleiche Problem hatte ich mit dem Namen des Threads hoffe der ist so verständlich)
Da ist eine Sache die mich heute schon mehrere Stunden beschäftigt also:
Ich habe 2 Objektvariablen in einer Prozedur. Die eine ist vom Typ des Vorfahr der anderen.
Var1 : TVorfahr;
Var2 : TNachfahr;
Zu erst wird die zweite Variable erstellt mit Create.
Var2 := TNachfahr.Create;
Dann wird die erste Variable mit der zweiten belegt.
Var1 := Var2;
So jetzt wird der Speicher von Variable eins wieder freigegeben.
Var2.Free;
Dann hab ich versucht auf Var1 zuzugreifen und in machen Fällen hat es geklappt in anderen nicht.
Das versteh ich dann nicht. Oder ist das ganze nur Zufall gewesen weil der Speicher auf den Var1
zeigt noch nicht wiederverwertet wurde??? Hatte nämlich 3 verschiedene Reaktionen auf den Zugriffsversuch entweder es funktionierte ordnungsgemäß oder ich bekam irgedeinen Kauderwelsch oder es kam ein Zugriffsverletzungsfehler. Deshalb will ich wissen wie das mit dem Speicher in einer Prozedur ist wenn ich free auf eine Variable anwende die ich in der Prozedur deklariere. Wird der dann erst am Ende freigegeben oder dann wenn ich free mache ???
Wenn ich Var1 dann jetzt ganz leer haben möchte würde also dann reichen wenn ich Var1 := nil mache, sodass dann auch kein Speicher mehr unnötig besetzt ist. So hoffe ich hab es verständlich beschrieben

Wenn nicht versuch ich es gerne nochmal also fragt.
Bin da irgendwie mit meinem Latein am Ende
Ich hoffe das mir jemand helfen kann
MFG
Loki
P.S.: Anbei nochmal der Code oben zusammenhängend mit Code - Tag:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TTest.Egal; var Var1 : TVorfahr; Var2 : TNachfahr; Test : string; begin Var2 := TNachfahr.Create; Var1 := Var2; Var2.Free; Test := Var1.GetIrgendWas; end; |
Moderiert von
Motzi: Code- durch Delphi-Tags ersetzt.