Hallo zusammen,
vielleicht ist das wieder ein Post, der eine einfache Lösung hat, aber ich finde sie leider nicht, sodass ich Eure Hilfe brauche.
Um ein Programm komfortabel im Funktionsumfang erweitern zu können, bin ich auf DLLs bzw. BPLs gestoßen.
Welche ich davon effektiv verwenden werde ist eigentlich egal, denn das Programm ist nur für mich und ich entwickle nur mit Delphi...
Das ganze funktioniert auch wunderbar, sprich ist kann BPLs/DLLs laden und verwenden.
Dabei habe ich mich an dem Tutorial hier
Plugins in eigenen Anwendungen von sakura orientiert.
Wenn ich allerdings daran gehe, Forms zu verwenden, steigt mir das Programm mit einer EAccessViolation aus.
Code:
"at address 5003A43E in module 'rtl150.bpl'. Read of address 025F168C'."
Ich kompiliere die "MainApplikation" mit Runtime-Packages und lade die BPLs, die mir den Funktionumfang erweitern sollen (hier Program02) dynamisch (mit LoadPackge/UnloadPackge).
Das Programm bricht mit der oben genannten Fehlermeldung ab, sobald der Constructor von TProgram02 aufgerufen wird.
im Plugin-Package "Program02.bpl":
Delphi-Quellcode:
//"uProgram02.pas"
type TProgram02 = class(TObject)
private
FGUI : TProgram02GUI;
public
constructor Create;
[...]
constructor TProgram02.Create;
begin
FGUI := TProgram02GUI.Create(nil);
end;
//"uProgram02GUI.pas"
type TProgram02GUI = class(TForm)
[...]
Ich habe mal ein Minimal-Beispiel angehängt. Ich hoffe, dass jemand draus schlau werden kann.