AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DLL Dynamisch laden (Problem)

Ein Thema von danu1104 · begonnen am 20. Jan 2009 · letzter Beitrag vom 9. Feb 2009
Antwort Antwort
Seite 1 von 2  1 2      
danu1104

Registriert seit: 4. Dez 2006
75 Beiträge
 
Delphi 2006 Personal
 
#1

DLL Dynamisch laden (Problem)

  Alt 20. Jan 2009, 17:14
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:

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;
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.

Würde mich auf schnelle Antworten freuen

MFG Danu
Daniel
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: DLL Dynamisch laden (Problem)

  Alt 20. Jan 2009, 17:21
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
danu1104

Registriert seit: 4. Dez 2006
75 Beiträge
 
Delphi 2006 Personal
 
#3

Re: DLL Dynamisch laden (Problem)

  Alt 20. Jan 2009, 17:30
Ne, Funktioniert leider nicht, habe beides versucht!


Delphi-Quellcode:

// 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;
Edit1= Code hinzugefügt
Daniel
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: DLL Dynamisch laden (Problem)

  Alt 20. Jan 2009, 17:33
Zitat von danu1104:
Ne, Funktioniert leider nicht, habe beides versucht!
Was hast du beides versucht?

Und wegen der Strings: http://www.michael-puff.de/Artikel/StringDLL.shtml
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
danu1104

Registriert seit: 4. Dez 2006
75 Beiträge
 
Delphi 2006 Personal
 
#5

Re: DLL Dynamisch laden (Problem)

  Alt 20. Jan 2009, 17:40
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...
Daniel
  Mit Zitat antworten Zitat
danu1104

Registriert seit: 4. Dez 2006
75 Beiträge
 
Delphi 2006 Personal
 
#6

Re: DLL Dynamisch laden (Problem)

  Alt 20. Jan 2009, 17:57
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

Edit1.Text:=LDynDll_Encode(Pchar(ExtractFilePath(Paramstr(0))+'cryptemp.dll'),Pchar(Edit1.Text))
Daniel
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#7

Re: DLL Dynamisch laden (Problem)

  Alt 20. Jan 2009, 18:03
nicht so meine Spielwiese, aber mir fällt folgendes auf

Delphi-Quellcode:
function LDynDll_Encode(Filename, Str:Pchar):PChar;
var
  Func : TDllFuncEncode;
  DLLHandle : THandle;

begin
  DLLHandle := LoadLibrary (PChar(Filename));
du übergibst einen PChar an die Funktion, dann noch mal ein PChar(PChar) in der ersten Zeile - liegt es daran?
Ralph
  Mit Zitat antworten Zitat
danu1104

Registriert seit: 4. Dez 2006
75 Beiträge
 
Delphi 2006 Personal
 
#8

Re: DLL Dynamisch laden (Problem)

  Alt 20. Jan 2009, 18:07
Danke TaakTaak, doch funktioniert trozdem nicht.
Daniel
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: DLL Dynamisch laden (Problem)

  Alt 20. Jan 2009, 18:52
Du hast deinen Funktionszeiger nicht als Stdcall deklariert.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
danu1104

Registriert seit: 4. Dez 2006
75 Beiträge
 
Delphi 2006 Personal
 
#10

Re: DLL Dynamisch laden (Problem)

  Alt 20. Jan 2009, 19:04
Ne liegt ebenfalls nicht daran
Daniel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:32 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