Hallo,
also ich habe ein Problem beim Einbinden einer
DLL und habe schon verschiedenes ausprobiert. Nun brauche ich eure Hilfe. Die Variable c sollte mir das Resultat zurückgeben. Die
DLL läuft durch und ich bekomme einen Rückgabewert, aber wenn ich die Variable c auslesen möchte, steht da immer noch der Initialwert und nicht das Resultat der Berechnung.
My Code:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
type
{TIBANProc = function(d: integer; var c: PChar; b: PChar; a: PChar): integer; stdcall;}
TIBANProc =
function(a: PChar; b: PChar;
var c: PChar; d: integer): integer;
stdcall;
var
hDLL: THandle;
// Handle zur DLL
iRes: integer;
// Ergebnis der Funktion
FarProc: TIBANProc;
sDLLPath: PAnsiChar;
a,b: pChar;
c: pChar;
d: integer;
begin
sDLLPath := PChar(ExtractFilePath(Application.ExeName) + '
IBANKernel.dll');
hDLL := LoadLibrary(sDLLPath);
if hDLL = 0
then begin
ShowMessage('
DLL konnte nicht geladen werden.');
Exit;
end;
try
a := pChar('
415811.00032');
b := pChar('
100');
c := pChar('
xy');
d := 21;
iRes := 0;
@FarProc := GetProcAddress(hDLL, '
IT_IBANConvert');
if Assigned(@FarProc)
then
iRes := FarProc(a,b,c,d);
ShowMessage('
Bingo-->'+a+'
-->'+b+'
-->'+c+'
------->'+IntToStr(iRes));
FreeLibrary(hDLL);
except
ShowMessage('
Funktion der DLL konnte nicht ausgeführt werden.');
end;
end;
Hier noch die H-Datei der
DLL:
Code:
typedef int (__cdecl *IT_IBANConvert) (char *pszKonto,
char *pszBCPC,
char *pszIBAN,
int nIBANLen,
char *pszBC,
int nBCLen,
char *pszPC,
int nPCLen,
char *pszBIC,
int nBICLen);
Die ersten 4 Parameter sind zwingend, die anderen nicht. Was mache ich falsch?
[edit=SirThornberry]Delphi-Tags und C-Tags gesetzt - nächstes mal bitte selbst machen Mfg, SirThornberry[/edit]