arbeite an einem Projekt zur ActiveX-Steuerung einer externen Anwendung und es klappt alles soweit. Die Kommunikation hatte ich bisher über ein
Objekt ohne Event-Support gelöst. Jetzt wollte ich gern Events der externen Anwendung verarbeiten und habe die Objektversion mit Event-Support
benutzt. Das ganze funktioniert ähnlich gut wie die alte Lösung, auch die Events werden korrekt verarbeitet. Alles ist bestens bis auf eines: Wenn
ich meine Lazarus-Anwendung schliesse, gibt es IMMER einen externen SIGSEGV und ich weiss einfach nicht warum bzw. was ich tun kann um das zu vermeiden.
Habe mich an die Anleitung von "http://wiki.freepascal.org/LazActiveX" gehalten und das Objekt zum Schluss auch mit .Free freigegeben.
Erstellung:
Code: Alles auswählen
var
oEBP:TEvsEBPControl;
oEBP:=TEvsEBPControl.Create(Self);
oEBP.OnTrackEntered:=@gleisBetreten;
geht alles. Zum Schluss in Form.Close():
oEBP.Free;
oEBP:=nil; //egal -bewirkt nichts
Auch wenn ich das .oEBP.Free ins Form.Destroy reinmache wie in der Anleitung -geht trotzdem nicht. Habe die Fehlermeldung als Screenshot angehängt.
Der Befehl "oEBP.Free;" löst scheinbar den SIGSEGV aus. Wenn ich ihn weglasse kommt der Fehler trotzdem, vermutlich weil er dann automatisch aufgerufen wird.