AGB  ·  Datenschutz  ·  Impressum  







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

Delphi Bugs mit Lösungen...

Ein Thema von Mavarik · begonnen am 19. Mai 2017 · letzter Beitrag vom 20. Mai 2017
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#1

AW: Delphi Bugs mit Lösungen...

  Alt 19. Mai 2017, 14:39
Delphi-Quellcode:
  if Assigned(FMethods) then //
    FMethods.Free; // Fehlte
Das if Assigned kannst du dir sparen, das macht das Free selbst. Unter ARC wird das vom Compiler sowieso durch eine nil-Zuweisung ersetzt, was die Abfrage ebenso obsolet macht.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Delphi Bugs mit Lösungen...

  Alt 19. Mai 2017, 14:56
Delphi-Quellcode:
  if Assigned(FMethods) then //
    FMethods.Free; // Fehlte
Das if Assigned kannst du dir sparen, das macht das Free selbst. Unter ARC wird das vom Compiler sowieso durch eine nil-Zuweisung ersetzt, was die Abfrage ebenso obsolet macht.
Auf eine Methode eine Klasse zuzugreifen ohne zu testen, ob die Klasse Assigned ist - widerstrebt mir einfach...
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: Delphi Bugs mit Lösungen...

  Alt 19. Mai 2017, 15:01
Delphi-Quellcode:
  if Assigned(FMethods) then //
    FMethods.Free; // Fehlte
Sollte das nicht besser so heißen?
Delphi-Quellcode:
  if Assigned(FMethods) then
  {$IFDEF AUTOREFCOUNT}
    FMethods.DisposeOf;
  {$ELSE}
    FMethods.Free;
Warum wird im Free eigentlich nicht geprüft ob ARC und dann DisposeOf aufgerufen? Würde ne Menge an Code sparen.
Philip
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#4

AW: Delphi Bugs mit Lösungen...

  Alt 19. Mai 2017, 15:04
Warum wird im Free eigentlich nicht geprüft ob ARC und dann DisposeOf aufgerufen? Würde ne Menge an Code sparen.
Weil Free unter ARC eben gar nicht aufgerufen wird! Der Compiler ersetzt das einfach durch eine nil-Zuweisung.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: Delphi Bugs mit Lösungen...

  Alt 19. Mai 2017, 15:06
Dann könnte der Compiler das doch durch disposeof ersetzen
Philip
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Delphi Bugs mit Lösungen...

  Alt 19. Mai 2017, 15:11
Dann könnte der Compiler das doch durch disposeof ersetzen
Und für was sollte das dann gut sein?
Disposeof wird nur benötigt wenn da mehrere Referenzen auf das selbe Object sind, und Ressourcen freigegeben werden müssen.
Ansonsten besteht keinerlei Grund das einzusetzen.
Fritz Westermann
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#7

AW: Delphi Bugs mit Lösungen...

  Alt 19. Mai 2017, 15:14
Dann könnte der Compiler das doch durch disposeof ersetzen
Nicht unbedingt, denn DisposeOf macht etwas anders als eine nil-Zuweisung.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 04:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz