Es geht aus dem Code nicht hervor, das MyClientDataset ordentlich freigegeben wird. Um den Code zu verstehen, muss ich in fremden Code nachschauen, wobei sich hier Probleme ergeben:
* Habe ich den Quelltext? (hat nicht jeder)
* Existiert ein Manual? (ja ja, F1)
* Wird da wirklich etwas freigegeben? (hoffen wir mal)
Ich muss also ganz schöne Klimmzüge anstellen, um zu verifizieren, das das Objekt freigegeben wird. => Unnötige Arbeit => schlecht lesbar => schlecht wartbar.
Eine wesentliche Eigenschaft der Klasse TComponent ist die Owner-Beziehung, die im Wesentlichen u.a. dafür sorgt, dass der Owner einer TComponent-Instanz die Freigabe veranlasst, wenn der Owner freigegeben wird.
Man könnte also fast behaupten, dass ein Großteil der Daseinsberechtigung von TComponent aus diese Owner-Beziehung besteht.
Die Klasse TComponent selbst ist eine der wesentlichen Basis-Komponenten der
VCL.
Deiner Argumentation folgend und weitergedacht, dürfte ich auch keine TStrings benutzen, weil ich ja nicht weiß, ob die Strings wirklich gespeichert werden (ich müsste dort auch erst mal den Quelltext sichten, und wenn ich den nicht habe ...)
Eigentlich dürfte ich keine Komponenten verwenden ... alles selber programmieren.
Ein weiteres Kriterium, für die Angabe eines Owners, ist der einfachere Zugriff auf die Komponenten über das Components-Array des Owners.
Dieses funktioniert aber nur, wenn ich den Owner bei der Instanz-Erzeugung mit angebe.
Und wenn ich den Owner angebe, dann habe ich - as designed - die Verantwortung für die Freigabe delegiert, an den Owner.
Wer dieses dann im Code nicht versteht, der sollte sich auch den Gefallen tun und den Editor ganz schnell wieder schließen, denn es fehlen die existentiellen Grundlagen für die
VCL.
@all: Wenn diese Diskussion hier nervt, dann nur Bescheid geben - wir führen dies dann per PN weiter