AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi Weak Referenzen überlegungen...
Thema durchsuchen
Ansicht
Themen-Optionen

Weak Referenzen überlegungen...

Ein Thema von Mavarik · begonnen am 26. Dez 2014 · letzter Beitrag vom 27. Dez 2014
Antwort Antwort
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Weak Referenzen überlegungen...

  Alt 26. Dez 2014, 17:22
"ShowModal" ist wie bereits gesagt kein besonders gutes Beispiel, weil unter iOS zwar unterstützt wird und dort tatsächlich auch blockiert, aber spätestens unter Android ist damit Schluss.
Zudem kann ich den Fehler, dass das Form nicht geschlossen wird, ebenfalls nicht nachstellen - zumindest nicht mit mit o.g. Code.

Hast Du ein echtes Beispiel für uns, wo Dich ARC zwickt?
Über ARC unter Win32 würde ich - Stand heute - nicht nachdenken. Es liegen keine belastbaren Infos vor, dass wir das in endlicher Zeit bekommen würden, vor der Art der Implementation ganz zu schweigen. Das ist reine Spekulation.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Weak Referenzen überlegungen...

  Alt 26. Dez 2014, 17:30
Die Art der Implementation von ARC ist keine Spekulation, sondern aktuell genau so implementiert
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Weak Referenzen überlegungen...

  Alt 26. Dez 2014, 17:48
Ich meine die Überlegung, ob ARC unter Win32/Win64 - wenn es denn kommt - via Compiler-Schalter steuerbar sein könnte etc.

//edit:

Zum Thema: Eigene Verrenkungen mit .DisposeOf() kann man sich sparen, wenn man das Event OnClose des betreffenden Forms ausprogrammiert und dort den Parameter "Action" auf TCloseAction.caFree setzt. Dann wird der Destruktor auch ARC-konform am Ende aufgerufen.
Daniel R. Wolf
mit Grüßen aus Hamburg

Geändert von Daniel (26. Dez 2014 um 17:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: Weak Referenzen überlegungen...

  Alt 26. Dez 2014, 17:56
Sorry sollte natürlich Show und nicht showmodal sein
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Weak Referenzen überlegungen...

  Alt 26. Dez 2014, 18:14
Sorry sollte natürlich Show und nicht showmodal sein
Das ändert an meiner Aussage nichts. Mit einer lokalen Variablen ist bei beiden Schluss und mit einer nicht-lokalen ist das Design falsch, denn dann ist FreeAndNil Pflicht.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: Weak Referenzen überlegungen...

  Alt 26. Dez 2014, 22:51
Das ändert an meiner Aussage nichts. Mit einer lokalen Variablen ist bei beiden Schluss und mit einer nicht-lokalen ist das Design falsch, denn dann ist FreeAndNil Pflicht.
FreeandNIL hilft auch nicht.

Wenn man ein Fenster öffnet, nutzt man i.d.R. doch die Variable im Form.

Aber das war ja nicht die Frage...
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Weak Referenzen überlegungen...

  Alt 26. Dez 2014, 23:09
Das ändert an meiner Aussage nichts. Mit einer lokalen Variablen ist bei beiden Schluss und mit einer nicht-lokalen ist das Design falsch, denn dann ist FreeAndNil Pflicht.
FreeandNIL hilft auch nicht.

Wenn man ein Fenster öffnet, nutzt man i.d.R. doch die Variable im Form.

Aber das war ja nicht die Frage...
Welche "Variable im Form"?

idR heisst ja nicht, dass es korrekt ist. Korrekt ist auf jeden Fall, dass Variablen (vor allem die für Instanz-Referenzen) die nicht lokal sind niemals auf einem ungültigen Wert stehen zu lassen. Selbst unter Nicht-ARC ist das schon immer der direkte Weg zu "Torte-Im-Auge" gewesen.

Ein FSomeThing.Free knallt und ist auch mit if Assigned( FSomeThing ) then nicht zu bändigen, wenn sich dort noch eine ungültige Referenz befindet. Lösen kann man das nur mit dem Setzen der Variablen auf nil und dafür wurde ja extra FreeAndNil eingeführt. Und das ist dann auch ARC-Safe.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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:16 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