![]() |
Objekt in einem Package modifizieren
Hi,
ich bastle gerade mit ein paar Delphi Packages rum. Im Moment hab ich ein Programm und 2 Packages. In Package1 ist eine abstract class enthalten die von einer Unit im Programm implementiert wird. Das Programm erstellt auch ein Objekt dieser abgeleiteten Klasse. Das Package2 lade ich dynamisch über LoadPackage() in das Programm. Das ganze Package2 besteht aus nur einer prozedur die eine Referenz auf die in Package1 deklarierte abstract class erwartet. Nachdem ich die package2.bpl im Programm geladen habe greife ich über die exportierte prozedur darauf zu und übergebe dabei self, da das package2 innerhalb einer procedure von der abgeleiteten klasse geladen wird. In der prozedur (im package2) kann ich jetzt beliebig an dem objekt rummachen, variablen auslesen usw. Wenn ich aber eine Variable setze oder generell schreibend darauf zugreife, funktioniert das zwar, wenn ich dann aber wieder zum Programm zurückkehre und dort ebenfalls schreibend auf self zugreife gibts ne Access Violation. In Programmcode ausgedrückt:
Delphi-Quellcode:
Wenn ich anstatt den namen zu setzen einfach nur den namen ausgeben lasse (im package) kann ich hinterher noch schreibend zugreifen.
...
p := GetProcAddress(alib,PChar('LoadLib')); @AMethod := p; Method(self); // hier wird dann z.B. self.name := 'foobar'; ausgeführt self.name := 'wasanders'; // Access Violation ... nur wenn das Package self verändert kracht es... Gibts da irgendwelche internen locks die den schreibenden Zugriff verbieten nachdem das Package daran rumgefummelt hat? Langsam gehen mir die Ideen aus an was das liegen könnte :( |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz