Hallo zusammen,
mich plagt folgendes (Verständnis-?)Problem. Ich habe eine Anwenung, die aus mehreren Formularen besteht, in eine dll gewandelt und möchte diese Anwendung aus einer anderen (Delphi-) Anwendung heraus mit Parametern versorgen. Diese zweite Anwendung dient mir zunächst als Testumgebung, um die dll-Anwendung mit Parametern zu versorgen. Die dll-Anwendung starte ich aus dieser Testumgebung heraus mit
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TForm1.LoadGUIButtonClick(Sender: TObject); begin Handle:=LoadLibrary('usrint.dll'); FreeLibrary(Handle); end; |
Nach diesem Aufruf startet meine Anwendung in der dll. Soweit alles ok. Aber die globale Variable
Handle bekommt natürlich erst einen Wert zugewiesen, wenn ich meine dll-Anwendung schließe. Erst dann komme ich in die Testumgebung zurück.
Um die laufende Anwendung mit Parametern zu versorgen, habe ich in meiner Testanwendung verschiedene Events auf Buttons gelegt, wie z.B.:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm1.InitializeGUIButtonClick(Sender: TObject); var EyesiInitializeFunktion : TEyesiInitializeFunktion; begin Handle:=LoadLibrary('usrint.dll'); if Handle <> 0 then begin @EyesiInitializeFunktion := GetProcAddress(Handle,'eyesiMPInitialize'); if @EyesiInitializeFunktion <> nil then begin EyesiInitializeFunktion(0,100); end; FreeLibrary(Handle); end; end; |
Dieser Aufruf öffnet wahrscheinlichich eine neue Instanz meiner dll und die Variablen kommen vermutlich aus diesem Grund nicht mit den richtigen Werten in meiner dll an.
Vermutlich ist einfach mein Lösungsansatz falsch. Wer kann mir den entscheidenden Tip geben ????
Grüße
Moderiert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 24.06.2008 um 20:46