Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.236 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Automatische Referenzzählug bei Interfaces

  Alt 21. Sep 2021, 11:14
Drei grundsätzliche Punkte will ich schon mal nennen:

1) Ist newOp1 eine Interfacevariable? Davon gehe ich nicht aus. Du wirst sie als MyIntVar: IMyIntf deklarieren müssen.

2) Man sollte Interface-Parameter nie als ".Create" übergeben.
Statt MyProc(TMyIntf.Create); also besser
Delphi-Quellcode:
var
tmpIntf: IMyIntf;
...
tmpIntf := TMyIntf.Create;
MyProc(tmpIntf);
Sonst kann (wird?) es Probleme mit der Referenzzählung geben.

3) Die ifdef-Stellen würde ich vermeiden. Ich habe jetzt kein Delphi zu Hand, finde das aber verwirrend.
Ich würde eher eine Projektkopie erstellen und dort auf Interfaces umstellen. Deine Klasse(n) dürfen nirgends benutzt werden, außer einmalig das Create. Ansonsten IMMER nur Interfacevariablen verwenden.
Das Create kann man in einer Factory verstecken, die direkt fertige Interfaces herausgibt. Nur sie muss dann (im Implementationsteil) die eigentlichen Klassen kennen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli (21. Sep 2021 um 11:16 Uhr)
  Mit Zitat antworten Zitat