Es gibt viele Stolpersteine, wenn man Klassen so über
DLL-Grenzen hinaus benutzt. Das fängt schon bei einem simplen is bzw. as an, das nicht funktioniert. Das wird aber teilweise auch in den Quelltexten der
RTL und
VCL benutzt. Deshalb erlebt man da durchaus die eine oder andere Überraschung...
Die Umstellung auf Interfaces lohnt sich. Damit ist man zukunftssicher unterwegs und muss nicht mit Workarounds anfangen, wenn es Probleme gibt. Zumal die Fehlersuche im Zweifelsfall enorm Zeit kostet.
Dazu kommt, dass man die Schnittstelle zur
DLL auch bei Erweiterungen nicht ändern muss, sondern auf verschiedene Versionen eines Interfaces prüfen kann, so also zwischen verschiedenen Versionen der
DLL und des Hostprogramms kompatibel ist. Wenn man das denn möchte.
Vor allen braucht man sich aber nicht darum zu kümmern, dass der Speicher der übergebenen Objekte nicht zu früh oder zu spät freigegeben wird usw., da das automatisch passiert, wenn die Referenzen z.B. auf nil gesetzt werden. Gerade bei mehreren beteiligten Modulen ist das sehr hilfreich.
Für die generischen Listen usw. haben wir z.B. Container mit Interface-Anbindung erstellt.