Announcement

Collapse
No announcement yet.

Dynamisches einbinden von BPL's ???

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Dynamisches einbinden von BPL's ???

    Mit <b>function LoadPackage(const Name: string): HMODULE;</b> <br>
    kann ich zwar mein Package laden aber was kommt dann? <br> <br>
    Wie komme ich dann an die Functionen bzw. Proceduren in den Units in dem Package?

  • #2
    Hallo,

    das folgende Beispiel demonstriert die Vorgehensweise:
    <pre>
    type
    TCreatePackageFormProc = Procedure;

    procedure TForm1.Button1Click(Sender: TObject);
    var
    package : HMODULE;
    proc : TCreatePackageFormProc;
    begin
    package := LoadPackage('DynLoadPackage.bpl');
    if package = 0 then
    RaiseLastWin32Error;
    proc := GetProcAddress(package, 'CreatePackageForm');
    if Assigned(proc) Then
    proc
    else
    begin
    UnloadPackage(package);
    raise
    Exception.Create('Package exportiert CreateChildProc nicht!');
    end;
    end;
    </pre>
    Da eine Package rein technisch gesehen nur eine DLL ist, unterscheidet sich die Vorgehensweise nicht von einer DLL. Über die Win32-API-Funktion <b>GetProcAddress</b> kann man den Einsprungpunkt der von der Package (DLL) exportierten Schnittstellenprozedur ermitteln

    Comment

    Working...
    X