Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.586 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: Interfaces und nil setzen

  Alt 2. Jun 2018, 16:54
Deswegen ja die Frage in welchen kombinationen man es manuell freigeben muss und wann nicht, um meinen Code nach möglichen problemen zu durchsuchen
Das Datenmodul musst du nie manuell freigeben, wenn es einen passenden Owner hat.

Aber wie schon geschrieben:
Ich kann nur sehr davon abraten Interfaces direkt in visuellen Komponenten zu implementieren. Sprich so etwas:
Delphi-Quellcode:
TBlub = class(TDataModule, ITest)
...
Das macht nur recht schwer zu findende Probleme, wenn man nicht sehr aufpasst. Den Fehler haben wir auch mal gemacht, aber sind dann schnell davon abgekommen und haben noch einmal eine saubere Architektur entworfen.

Das sieht dann so ca. aus:
Delphi-Quellcode:
IData = interface
end;

TMyButton = class(TButton)
  FData: IData;
end;

IButton = interface
  Instance: TMyButton;
  Data: IData;
end;
Dazu noch entsprechende Events zur Kommunikation von Änderungen, der Freigabe des TMyButton Controls, wobei die Instanz von TMyButton auf nil gesetzt wird.

Das ist bei uns noch umfangreicher, aber das ist die Grundidee.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke ( 2. Jun 2018 um 16:57 Uhr)
  Mit Zitat antworten Zitat