AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Objekt deinstanzieren

Ein Thema von Gambit · begonnen am 4. Mär 2005 · letzter Beitrag vom 4. Mär 2005
Antwort Antwort
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#1

Objekt deinstanzieren

  Alt 4. Mär 2005, 18:28
Hallo,

in einer Form instanziere ich ein Objekt mit

MyList:= TStingList.create; nun muss ich doch, wenn ich dieses Objekt nicht mehr brauche deinstanzieren, oder?

mache ich das am besten mit
MyList.free? Wenn ich nun in einer anderen Form, zB. durch Abbruch, meine Strings, die in der Liste stehen gar nicht benutzt habe, aber auch nicht genau weiß, ob überhaupt welche drinstehen bzw. das Objekt gar nicht instanziert wurde, kann ich dann:

Delphi-Quellcode:
if FormSoUndSo.PictureList <> nil then
   begin
     FormSoUndSo.PictureList.Free;
     FormSoUndSo.PictureList:= nil;
   end;
oder wie geht das nun genau?

Gruß

Gambit
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Objekt deinstanzieren

  Alt 4. Mär 2005, 18:33
Moin!

1. Ja
2. Ja
3. Auch korrekt

Alles richtig.

Für deine 3. Frage noch 2 Zusätze:

Du kannst auch anstatt dem <> Nil Vergleich auch Assigned() nutzen: If Assigned(ObjektVariable) Then .

Und die zweite Sache: das .Free; und := Nil setzen gibt es auch in der SysUtils als eine Funktion: FreeAndNil()

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Objekt deinstanzieren

  Alt 4. Mär 2005, 18:33
Zitat:
Hallo,

in einer Form instanziere ich ein Objekt mit

MyList:= TStingList.create;


nun muss ich doch, wenn ich dieses Objekt nicht mehr brauche deinstanzieren, oder?
Richtig.
Zitat:
mache ich das am besten mit

MyList.free?
Richtig.

Zitat:
Wenn ich nun in einer anderen Form, zB. durch Abbruch, meine Strings, die in der Liste stehen gar nicht benutzt habe, aber auch nicht genau weiß, ob überhaupt welche drinstehen bzw. das Objekt gar nicht instanziert wurde, kann ich dann:
Delphi-Quellcode:
if FormSoUndSo.PictureList <> nil then
   begin
     FormSoUndSo.PictureList.Free;
     FormSoUndSo.PictureList:= nil;
   end;
oder wie geht das nun genau?

Gruß
Ich würde so empfehlen:
 if Assigned( ObjektVariable ) then ..... [EDIT]
Bin zu langsam.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#4

Re: Objekt deinstanzieren

  Alt 4. Mär 2005, 18:39
Wie, so?

Delphi-Quellcode:
if assigned(FormSoUndSo.PictureList) then
   begin
     FormSoUndSo.PictureList.Free;
     FormSoUndSo.PictureList:= nil;
   end;
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#5

Re: Objekt deinstanzieren

  Alt 4. Mär 2005, 18:42
Also was ich nicht so richtig aufn Schirm kriege ist:

Warum muss ich noch auf Nil setzen, wenn ich vorher mit ObjektVariable.free deinstanziert habe. Ich dachte mit ObjektVariable.free würde der Speicher schon freigegeben. Und wann benötige ich ObjektVariable.destroy?
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: Objekt deinstanzieren

  Alt 4. Mär 2005, 18:54
Destroy solltest du gar nicht aufrufen, das macht Free ja für dich.
Mit Free hast du das Objekt zwar freigegeben, aber der Zeiger zeigt immer noch an die Stelle. Bei einer Abfrage auf nil (wie du es ja dann machst) knallt es dann nach dem Freigeben.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#7

Re: Objekt deinstanzieren

  Alt 4. Mär 2005, 18:57
comprendo, gracias...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 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