![]() |
DLL Dynamisch laden (Problem)
Hallo, es geht darum eine DLL Dynamisch zu laden, ich habe mir auch bereits Tutorials angeschaut und hier im Forum nachgeguckgt, jedoch bin ich nicht fündig geworden.
Das laden der DLL sieht bei mir wie Folgt aus:
Delphi-Quellcode:
type TDLLFuncEncode = function(Str:String):PChar; Function LDynDll_Encode(Filename,Str:String):PChar; var Http:TidHttp; implementation function LDynDll_Encode(Filename, Str:String):PChar; var Func : TDllFuncEncode; DLLHandle : THandle; begin DLLHandle := LoadLibrary (PChar(Filename)); @Func := GetProcAddress (DLLHandle, 'Encode'); if DLLHandle <> 0 then begin if @Func <> nil then begin result := Func(str); end; end; end; Folgender code liegt in der DLL:
Delphi-Quellcode:
Ich habe 5 Stunden alles mögliche versucht, ich bekomme aber keine verschlüssslung raus sondern irgendwelche Binar Zeichen bzw Symbole. Wenn ich die DLL Fest einbinde functioniert es wunderbar, aber genau das möchte ich nicht.function EnCode(Str:String):Pchar; stdcall; Var Temp1,Temp2, Temp3,Temp4:String; begin If Str = '' then Exit else try Temp1:=dwReverseStr(Str); Temp2:=Base64Encode(Temp1); Temp3:=Base64Encode(Temp2); Temp4:=Base64Encode(Temp3); finally result:=Pchar(Base64Encode(Temp4)); end; end; Würde mich auf schnelle Antworten freuen :) MFG Danu |
Re: DLL Dynamisch laden (Problem)
Als allererstes kannst du nicht so einfach Strings zwischen DLL und Programm austauschen. Warum wurde hier im Forum schon öfters diskutiert.
Zum anderem muss man auf Groß- und Kleinschreibung achten. In der DLL heißt die Funktion EnCode, du willst aber die Funktion Encode laden. |
Re: DLL Dynamisch laden (Problem)
Ne, Funktioniert leider nicht, habe beides versucht! :-(
Delphi-Quellcode:
Edit1= Code hinzugefügt// Programm Function function LDynDll_Encode(Filename, Str:Pchar):PChar; var Func : TDllFuncEncode; DLLHandle : THandle; begin DLLHandle := LoadLibrary (PChar(Filename)); @Func := GetProcAddress (DLLHandle, 'EnCode'); if DLLHandle <> 0 then begin if @Func <> nil then begin result := Func(str); end; end; end; // DLL Function function EnCode(Str:Pchar):Pchar; stdcall; Var Temp1,Temp2, Temp3,Temp4:String; begin If Str = '' then Exit else try Temp1:=dwReverseStr(Str); Temp2:=Base64Encode(Temp1); Temp3:=Base64Encode(Temp2); Temp4:=Base64Encode(Temp3); finally result:=Pchar(Base64Encode(Temp4)); end; end; |
Re: DLL Dynamisch laden (Problem)
Zitat:
Und wegen der Strings: ![]() |
Re: DLL Dynamisch laden (Problem)
Ich habe auf gross und kleinschreinung geachtet und Pchar statt eines Strings genommen.
Oder dürfen die variablen auch keine Strings sein? Also zb Temp1,Temp2 usw... |
Re: DLL Dynamisch laden (Problem)
Ich habe jetzt mal getestet ob die function überhaupt ausgeführt wird
Delphi-Quellcode:
function EnCode(Str:Pchar):Pchar; stdcall;
Var Temp1,Temp2, Temp3,Temp4:String; begin // Mit showmessage() Showmessage(Str); If Str = '' then Exit else try Temp1:=dwReverseStr(Str); Temp2:=Base64Encode(Temp1); Temp3:=Base64Encode(Temp2); Temp4:=Base64Encode(Temp3); finally result:=Pchar(Base64Encode(Temp4)); end; end; Doch wie es scheint wird die DLL erst garnicht aufgerufen, aber wieso was ist falsch? so rufe ich die DLL unter Button1Click auf in der TForm1 aus einer Pas Datei
Delphi-Quellcode:
Edit1.Text:=LDynDll_Encode(Pchar(ExtractFilePath(Paramstr(0))+'cryptemp.dll'),Pchar(Edit1.Text))
|
Re: DLL Dynamisch laden (Problem)
nicht so meine Spielwiese, aber mir fällt folgendes auf
Delphi-Quellcode:
du übergibst einen PChar an die Funktion, dann noch mal ein PChar(PChar) in der ersten Zeile - liegt es daran?
function LDynDll_Encode(Filename, Str:Pchar):PChar;
var Func : TDllFuncEncode; DLLHandle : THandle; begin DLLHandle := LoadLibrary (PChar(Filename)); |
Re: DLL Dynamisch laden (Problem)
Danke TaakTaak, doch funktioniert trozdem nicht.
|
Re: DLL Dynamisch laden (Problem)
Du hast deinen Funktionszeiger nicht als Stdcall deklariert.
|
Re: DLL Dynamisch laden (Problem)
Ne liegt ebenfalls nicht daran
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz