AGB  ·  Datenschutz  ·  Impressum  







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

FreeAndNil vs TObject.free

Ein Thema von DataCool · begonnen am 4. Dez 2003 · letzter Beitrag vom 5. Dez 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#1

FreeAndNil vs TObject.free

  Alt 4. Dez 2003, 15:11
Hi Leute,

mal ne grundsätzliche Frage :

Wenn ich mir den Quellcode von der Procedure FreeAndNil anschaue, macht diese ja nicht anderes als das Free des Objects aufzurufen und dann den Zeiger auf nil zu setzen.
Wann ist das sinnvoll ?

Gruß Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#2

Re: FreeAndNil vs TObject.free

  Alt 4. Dez 2003, 15:13
Hallo,

Es ist dann sinnvoll, wenn du ein Objekt freigeben und den Zeiger auf nil setzen willst.
Es spart einfach eine Zeile bzw vergisst man das nil-setzen nicht.

grüße, daniel
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: FreeAndNil vs TObject.free

  Alt 4. Dez 2003, 15:26
Hi,

das habe ich mir auch schon gedacht

nächste Frage :

Macht folgender Source Sinn ? :

Code:
procedure SinnOderSinnlos;
Var strL : TStringList;
begin
   strL := TSTringList.create;
   try
      strL.Add('Bla');
      // ..... weitere verarbeitungen mit der Stringliste
   finally
      FreeAndNil(strL);  // oder strL.free
   end;
end;
Bzw. wann macht es Sinn, eine Variable auf Nil zu setzen, außer zu zu vergleichszwecken ?

Gruß Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#4

Re: FreeAndNil vs TObject.free

  Alt 4. Dez 2003, 15:32
Ich würde sagen, dass es nur bei Zeigern die später noch verfügbar sind Sinn macht. Also bei Klassenobjekten und globalen Objekten (wenn sie sich nicht vermeiden lassen).

Bei lokalen Objekten eher weniger
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: FreeAndNil vs TObject.free

  Alt 4. Dez 2003, 15:32
Du hast Recht, die Variable zusätzlich noch auf nil zu setzen, macht nur Sinn, wenn du danach prüfen willst, ob das Objekt besteht oder nicht. Ansonsten sind es ein paar verschwendete Takte .
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Sourcemaker
Sourcemaker

Registriert seit: 3. Sep 2003
Ort: Westoverledingen
264 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: FreeAndNil vs TObject.free

  Alt 4. Dez 2003, 15:33
Hi,

innerhalb einer kleinen Prozedure dürfte der Sinn begrenzt sein wenn es aber eine private Variable der Form ist und du an unterschiedlichen Programmstellen auf Initialisierung der Variable testest steigt der Sinn erheblich.
Delphi-Quellcode:
if Var = nil then
   Var := Ini();
Grüße

Frank
Frank
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#7

Re: FreeAndNil vs TObject.free

  Alt 4. Dez 2003, 15:39
Ok, so habe ich das bis jetzt auch immer behandelt !

Wenn irgentwo anders die Var geprüft wird dann auf nil setzen, ansonsten Free verwenden.

Habe nur neulich eins meiner Progs mit memproof getestet und da merkert er das(nicht auf nil setzen) an,
deshalb meine Frage !

Danke Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
s14

Registriert seit: 15. Mai 2003
Ort: München
251 Beiträge
 
Delphi 7 Architect
 
#8

Re: FreeAndNil vs TObject.free

  Alt 4. Dez 2003, 15:39
@Sanchez
geht man in Österreich schon mit 42 in Pension? Da muss ich ja noch schnell Umsiedeln 8)
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#9

Re: FreeAndNil vs TObject.free

  Alt 4. Dez 2003, 15:52
Hallo DataCool,

dieses Thema wurde auch schon in diesem Thread (etwas weiter unten) diskutiert.

Ich vertrete generell die Meinung, dass Referenzen/Pointer entweder gültig oder nil sein sollten. Der "hässliche Zwischenzustand" birgt nur in wenigen Ausnahmefällen Vorteile, führt aber auf der anderen Seite zu häufig zu Problemen und ist im Design von Sprachen wie Smalltalk, Java oder C# vermieden worden
gruß, choose
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: FreeAndNil vs TObject.free

  Alt 4. Dez 2003, 16:22
Ich habe mir angewöhnt FreeAndNil zunehmen, auch wenn ich den zeiger nachher nicht auf nilk testen will. einfach aus dem Grund um es mir anzugewöhnen, damit für den fall, dass ich es mal brauche es automatisch mache.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:13 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