Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Probleme / Zugriffsverletzung mit dynamisch geladener BPL (https://www.delphipraxis.net/122041-probleme-zugriffsverletzung-mit-dynamisch-geladener-bpl.html)

robvs 8. Okt 2008 16:29


Probleme / Zugriffsverletzung mit dynamisch geladener BPL
 
Hallo zusammen!

Ich habe vor mit dynamisch geladenen Packages zu arbeiten, um ein Programm zu flexibilisieren / Programmfunktionen zu kapseln.

Dabei übergebe ich eine IB_Connection an die dynamisch geladene Funktion, die im Folgenden innerhalb der geladenen BPL verwendet werden soll.
Und genau dann fangen die Probleme an: Ich kann die Connection zwar der Query zuweisen und im "Auswerten/Ändern" scheinen alle Werte korrekt vorhanden zu sein, jedoch bekomme ich dann beim qry.Open eine Zugriffsverletzung. Vermutlich liegt das Problem im Speichermanagement, aber ich komme an der Stelle nicht weiter. Kann jemand das Problem diagnostizieren und weiß eventuell eine Lösung?

Hier nun der relevante Quelltext der aufrufenden Exe:
Delphi-Quellcode:
procedure TfrmListen.BitBtnTESTClick(Sender: TObject);
var
   hm: HModule;
   ExecF: procedure(Owner: TIB_Connection);
begin
     hm:=LoadPackage(ExtractFilePath(ParamStr(0)) + 'TEST.bpl');

     if hm <> 0 then
     try
        @ExecF:=GetProcAddress(hm, 'RUN');

        if Assigned(ExecF) then
        begin
             ExecF(fsbListen.Databases.Mandant);
        end
        else
        begin
             ShowMessage ('Kein RunProgram gefunden!');
        end;
     finally
        UnloadPackage(hm);
     end
     else
         ShowMessage ('bpl nicht gefunden');
end;
Und nun die Methoden der BPL:
Delphi-Quellcode:
procedure RUN(Owner: TIB_Connection);
var
   frm: TForm1;
begin
     frm := TForm1.Create(Owner);
     frm.ShowModal;
end;

constructor TForm1.Create(Owner: TIB_Connection);
begin
     FOwner := Owner;
     inherited Create(FOwner);
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
   qry: TIB_query;
begin
     showmessage(FOwner.DatabaseName);

     qry := TIB_Query.Create(FOwner);
     qry.IB_Connection := FOwner;
     qry.SQL.Text := 'select * from beharzt';

     showmessage('bis hier komm ich');

     qry.Open;
     //IB_Query1.IB_Connection := FOwner;
     //IB_Query1.Open;
end;

exports RUN;
Viele Grüße
Rob

PS: Das Ganze wird unter D2006 Enterprise mit IBObjects 4.8 entwickelt

robvs 9. Okt 2008 08:57

Re: Probleme / Zugriffsverletzung mit dynamisch geladener BP
 
HILFE?!


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz