Delphi-PRAXiS
Seite 5 von 5   « Erste     345   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Webinar FreeAndNil (https://www.delphipraxis.net/210873-webinar-freeandnil.html)

DeddyH 30. Jun 2022 14:51

AW: Webinar FreeAndNil
 
Beim Aufruf von Free bzw. FreeAndNil musst Du nicht vorher auf Assigned oder nil prüfen, das tun die Methoden bereits intern, im Gegensatz zu Destroy. Zu Deinem Problem: falls das JSONObject Teil eines anderen JSON-Objekts ist, kümmert sich dies bereits um die Freigabe, mit der Zuweisung holst Du Dir dann lediglich einen weitere Referenz, aber keine neue Instanz. Rufst Du also hier Free auf einer bereits vom "Eltern-JSON" freigegebenen Referenz auf, knallt es natürlich, da hilft auch kein FreeAndNil.

Sherlock 1. Jul 2022 09:25

AW: Webinar FreeAndNil
 
Die ganze Diskussion zeigt doch nur eines: Die einzige Strafe, die die Verwendung von FreeAndNil mit sich bringt ist ein missbilligender Blick des Kollegiums. Es gibt keine Performance Strafe, es gibt keine Fehler. Es ist alles gut. Und damit kann ich wunderbar leben.

Sherlock

jaenicke 1. Jul 2022 12:18

AW: Webinar FreeAndNil
 
Zitat:

Zitat von Sherlock (Beitrag 1508254)
Es gibt keine Performance Strafe

Ganz kostenlos ist der Aufruf nicht, aber solange man das nicht in einer Schleife sehr oft aufruft, spielt das keine Rolle. Das try..finally Handling dürfte da ohnehin teurer sein.

himitsu 1. Jul 2022 12:29

AW: Webinar FreeAndNil
 
FreeAndNil hat doch kein Try-Finally drin?

Drum macht es ja eigentlich NilAndFree, im sich das Try-Finally zu sparen.



Einzig, wo es im FreeAndNil Probleme geben könnte, wenn im Destructor oder etwas darin Aufgerufenem oder anderem Freigegeben irgendwo auf diese (globale) Variable zugegriffen würde.
z.B. im OnDestroy der Form auf die Form-Variable, anstatt auf Self.

Hier ist die Variable ja schon vorher NIL und es würde dann knallen.


Genau aus dem Grund setzt Application.FormCreate schon vor dem Constructor/OnCreate die Variable, falls jemand beim Laden auf diese Variable zugreift.
und automatisch werden die FormVariablen nicht genilt, weswegen es dann beim Freigeben auch nicht mehr knallt.

dummzeuch 1. Jul 2022 13:05

AW: Webinar FreeAndNil
 
Zitat:

Zitat von himitsu (Beitrag 1508263)
FreeAndNil hat doch kein Try-Finally drin?

Drum macht es ja eigentlich NilAndFree, im sich das Try-Finally zu sparen.

Inwiefern spart FreeAndNil ein Try..Finally? Ich rufe FreeAndNil nämlich immer im Finally-Block auf. Also so:
Delphi-Quellcode:
  bla := nil;
  blub := TSomeObject.Create;
  try
    bla := TSomeOther.Create;

  finally
     FreeAndNil(bla);
     FreeAndNIl(blub);
  end;
Könnte ich da das Try..Finally irgendwie einsparen?

himitsu 1. Jul 2022 13:19

AW: Webinar FreeAndNil
 
Achso, da ist es doch vom Tempo her egal, ob Free oder FreeAndNil.



Dachte du meinst das FreeAndNil selber, also

Delphi-Quellcode:
try
  blub.Free;
finally
  blub := nil;
end;
vs. das im FreeAndNil
Delphi-Quellcode:
temp := blub;
blub := nil;
temp.Free;

bernau 4. Jul 2022 05:14

AW: Webinar FreeAndNil
 
Wird es das Webinar auf YouTube geben? Habe es leider verpasst.

bnreimer42 4. Jul 2022 20:40

AW: Webinar FreeAndNil
 
Schau mal auf https://blogs.embarcadero.com/freean...eloper-debate/

Da ist schon mal der Chat vom Webinar und der Satz:
Zitat:

This blog post will include the replay, slides, and more after the webinar.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:00 Uhr.
Seite 5 von 5   « Erste     345   

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