Zitat von
xaromz:
Hallo,
Hallo, und danke dir erstmal, funktioniert schonmal super
Zitat von
xaromz:
mit _AddRef und _Release würde ich erst experimentieren, wenn ich mich gut mit Interfaces auskenne.
naja, kenn ich ja noch net aus damit, und hab ich ja auch nur, um die AVs wegzubekommen
Zitat von
xaromz:
Ich habe Dein Beispiel aus dem ersten Beitrag mal etwas überarbeitet und folgende Änderungen vorgenommen:
- Instanzen und Interfaces nicht mehr gemischt (IApp/TApp). Diese niemals mischen (siehe oben: man sollte genau wissen, was man tut)
- Interfaces werden per const übergeben (dadurch wird die Referenzzählung nicht belastet)
- DLL wird beim Programmstart geladen und beim Beenden entladen
- IApp ist von Form1 entkoppelt
das mit dem mischen hab ich noch nicht ganz verstanden...du übergibst doch auch ein interface an die klasse TApp beim create (bzw. wird das memo-Objekt als Interface weitergegeben). TMemoWrapper wird wohl selbst auch als Interface interpretiert bzw. gibt dessen contructor das Interface zurück, was in der deklaration (class(TInterfacedObject, IEditor)) angegeben wurde?
zu dem entkoppeln...muss ich mal schauen, wie ich das dann mache wenn ich zugriff auf mehrere Objekte brauche, momentan ists ja zum test nur das memo...
Zitat von
xaromz:
Du solltest nie eine
DLL entladen, wenn Du in der Methode ein lokales Interface dieser
DLL hast. Beim Beenden der Funktion sorgt die Compiler-Magic nämlich dafür, dass das Interface abgebaut wird. Wenn aber die
DLL bereits entladen ist, dann gibt's eine
AV.
und bei globalen/"form-gültigen" interface-Typen ist das nicht so? versteh ich nicht so ganz...naja Compiler-Magic
hab zumindest erstmal einen funktionierenden startpunkt und paar Infos, den rest muss ich ausprobieren bzw. schauen, was ich so dazu finde
werde mir den Source so nochmal in einer Ruhigen minute zu Gemüte führen, habs jetzt nur überflogen und die änderungen gesucht bzw. deine Punkte daran nachvollzogen (zumindest versucht)
wird eh erst eingebaut, wenn (endlich mal) die Background-Klasse für den
DFM-Editor fertig ist und eingebaut ist...ist auch massig Arbeit, das alles anzupassen. wollte das nur im vorfeld schonmal bisschen probieren. Dem Interface wird dann diese Background-Klasse übergeben, welche sich per Event um das Treeview kümmert und das Plugin rührt dann nicht in der
vcl (wenn auch indirekt) rum... maximal bei Menüeinträgen, aber da muss aich auch schauen, wie ich das mit der toolbar (besonders den Glyphs) mache.
Gruß Frank