Dll zur lauzeit Einbinden
Hallo alle miteinander xD,
ich hab ein kleines Problem undd zwar möchte ich ein dll zu Laufzeit einbinden und bekomme bein aufruf immer die compilermeldung "nicht genügen wirkliche Parameter". Schnittstell in einer ExtraUnit:
Delphi-Quellcode:
Aufruf:
type
TDeleteKey = function(AKey: PChar): Boolean; stdcall; function dllDeleteKey(AKey: PChar): Boolean; implementation function dllDeleteKey(AKey: PChar): Boolean; var DeleteKey: TDeleteKey; Handle: THandle; begin Handle:=LoadLibrary(PChar(gsPfmRegistry)); if Handle <> 0 then begin @DeleteKey:=GetProcAddress(Handle, 'DeleteKey'); if @DeleteKey <> nil then Result:=DeleteKey(AKey); FreeLibrary(Handle); end; end;
Delphi-Quellcode:
lg
if pfmRegistry.TDeleteKey(PChar('Hallo')) then
ShowMessage('Funktioniert') else ShowMessage('Funktioniert nicht'); Sir K |
Re: Dll zur lauzeit Einbinden
Hi,
du musst die Funktion aufrufen und nicht den Typ
Delphi-Quellcode:
if dllDeleteKey(PChar('Hallo')) then
ShowMessage('Funktioniert') else ShowMessage('Funktioniert nicht'); |
Re: Dll zur lauzeit Einbinden
Achsoo... ok alles klar Danke!!
lg Sir K |
Re: Dll zur lauzeit Einbinden
Ok hab mir das jetzt mal angesehn und was merkwürdiges festgestellt.
Diese routine wird beim aufruf immer wieder ausgeführt, bis die Meldung eine StackOverFlow exception auftritt. Weis jemand woran das liegt? heíer nochmal die routine:
Delphi-Quellcode:
lg
function DeleteKey(AKey: PChar): Boolean;
var ltDeleteKey: TDeleteKey; lhHandle: THandle; begin lhHandle:=LoadLibrary(PChar(gsPfmRegistry)); if lhHandle <> 0 then begin @ltDeleteKey:=GetProcAddress(lhHandle, 'DeleteKey'); if @ltDeleteKey <> nil then Result:=DeleteKey(AKey); FreeLibrary(lhHandle); end; Sir K |
Re: Dll zur lauzeit Einbinden
Erklär doch mal was deiner Meinung nach da Zeile für Zeile passiert und warum es abbrechen sollte.
Die Methode ruft sich schliesslich immerwieder selbst auf. |
Re: Dll zur lauzeit Einbinden
...oh da hät ich auch selbst drauf kommen können :wall:
naja Danke!!! lg Sir K |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:00 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