![]() |
C dll Aufruf in Delphi
Hallo zusammen,
kann mit bitte jemand sagen mit welchen Datentypen ich diesen C Dll Aufruf in Delphi umsetzen kann?
Delphi-Quellcode:
Vielen Dank
long encryptData(char key[], char dec[], char enc[])
Mike |
Re: C dll Aufruf in Delphi
PChar, PChar, PChar; longint
|
Re: C dll Aufruf in Delphi
Hallo mkinzler,
vielen Dank für die schnelle Antwort. Das mit dem PChar dachte ich mir auch. Habe bisher folgenden Code:
Delphi-Quellcode:
und diesen in einer Prozedur:
implementation
function encryptData(KeyStr, DecryptedStr, EncryptedStr: PChar) : Integer; external 'EncDec.dll';
Delphi-Quellcode:
Ich bekomme damit jedoch immer eine Speicherveltzung.
var resultlength: integer;
keyStr, decryptedStr, encryptedStr: PChar;//string;//char(25); begin GetMem(keyStr, length(edit1.Text) + 1); StrCopy(keyStr, PChar(edit1.Text)); GetMem(decryptedStr, length(edit2.Text) + 1); StrCopy(decryptedStr, PChar(edit2.Text)); GetMem(encryptedStr, 256); resultlength := encryptData(keyStr, decryptedStr, encryptedStr); FreeMem(keyStr); FreeMem(decryptedStr); FreeMem(encryptedStr); Danke Mike |
Re: C dll Aufruf in Delphi
Wo genau?
|
Re: C dll Aufruf in Delphi
Hallo mkinzler,
der Fehler tritt immer beim Aufruf der Dll auf. Wenn ich diese Zeile auskommentiere dann gibt es keinen Fehler. Mike |
Re: C dll Aufruf in Delphi
Versuch mal:
Delphi-Quellcode:
var ... encryptedStr: string;
... resultlength := encryptData(PChar(Edit1.Text), PChar( Edit2.Text), PChar(encryptedStr)); |
Re: C dll Aufruf in Delphi
Hallo,
das hat leider auch nix gebracht. Vielleicht ist es interessant, der dritte Parameter wird in der dll gesetzt. Mike |
Re: C dll Aufruf in Delphi
Zitat:
|
Re: C dll Aufruf in Delphi
Ja es ist ein Rückgabewert.
|
Re: C dll Aufruf in Delphi
@toms: was meinst du damit??
@mkinzler: was ändert sich dadurch? Mike |
Re: C dll Aufruf in Delphi
Ich wollte nur sagen, das mir bewusst ist, das es hier um ein Rückgabewert handelt.
Die Aufrufkonvention (cdecl, stdcall, ...) legt fest, wie Parameter übergeben werden. |
Re: C dll Aufruf in Delphi
Hallo,
hat vielleicht noch jemand eine Idee wie ich die Zugriffsverletzung wegbekomme? Wie kann ich denn der Variablen die den Wert durch die dll bekommen soll mit einem leeren Speicherbereich vorbelegen?? Danke Mike |
Re: C dll Aufruf in Delphi
Delphi-Quellcode:
Welche Aufrufskonvension hast du nun verwendet?
setLength(encryptedStr, 255);
|
Re: C dll Aufruf in Delphi
Danke,
aktuell sieht mein Code so aus:
Delphi-Quellcode:
und es gibt leider immer noch eine Zugriffsverletzung. Hat noch jemand eine Idee??
implementation
function encryptData(KeyStr, DecryptedStr, EncryptedStr: PChar) : Integer; external 'EncDec.dll'; {$R *.dfm} procedure TForm1.encrypt1Click(Sender: TObject); var resultlength: integer; sresult: string; begin setlength(sresult, 255); resultlength := encryptData(PChar(edit1.Text), PChar(edit2.Text), PChar(sresult)); end; Danke Mike |
Re: C dll Aufruf in Delphi
Schon mit cdecl oder stdcall versucht?
|
Re: C dll Aufruf in Delphi
Vielen Dank.
Mit "stdcall" funktioniert es einwandfrei. Danke Mike |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:30 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