AGB  ·  Datenschutz  ·  Impressum  







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

Interfaces und nil setzen

Ein Thema von MyRealName · begonnen am 1. Jun 2018 · letzter Beitrag vom 2. Jun 2018
 
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.862 Beiträge
 
Delphi 12 Athens
 
#7

AW: Interfaces und nil setzen

  Alt 2. Jun 2018, 06:20
Bei den Datamodules ist es so, dass die ein generelles programmweites interface zur Verfügung stellen, welches beim programmstart geladen wird.
Bei letzterem hatte ich zuletzt das Problem, dass ich dieses interface auf ein Datamodule für import/export beim start erzeugt wurde, aber nicht auf nil gesetzt am Ende. Das bereitete mir Probleme bei der unit-finalization. nachdem ich das IImportExport := nil eingebaut habe, ging es wieder.
Das hört sich so an als würde dein Datenmodul direkt das Interface implementieren. Davon würde ich abraten, wenn es so ist, da deine Interfacereferenz noch weiterleben kann, wenn das Objekt zerstört wurde (automatisch per Owner oder auch manuell).
Beim Programmende kommt aber die Deinitialisierung dieser Interfaces, aber wenn das Objekt dahinter schon zerstört wurde, knallt es ggf. beim Aufruf von _Release.

Wir haben das so gelöst, dass unsere visuellen Komponenten und Datenmodule lediglich durch ein Interface gesteuert werden. Wird das Objekt freigegeben, wird die Referenz darauf im Interfaceobjekt auf nil gesetzt, aber das Interfaceobjekt lebt weiter. Man kann nicht mehr viel damit machen, aber man kann dies sauber abfangen und prüfen. Und vor allem hat man noch alle Daten usw., da diese nicht in der visuellen Komponente stecken, sondern in einem weiteren Interface, das sowohl die visuelle Komponente als auch das Interfaceobjekt kennen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
 


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 11:17 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 by Thomas Breitkreuz