Hallo,
ich habe ein Problem mit der Stringübergabe von Delphi (XE4) an eine C#
DLL.
Über die
DLL habe ich die Info, dass die Funktion so definiert sein soll:
int __stdcall spssOpenRead(
const char* fileName,
int* hFile);
Ich habe die
DLL ordnungsgemäß eingebunden:
Function spssOpenRead(fileName:pchar;hFile:Integer):Integer ;stdcall; external 'spssio32.dll' name 'spssOpenRead';
Mein Problem ist, dass ich es nicht schaffe der
DLL den „Filename“ zu übergeben.
Mein Aufruf sieht wie folgt aus:
Procedure click;
var iii,handle1:integer;
mm1:pchar;
begin
handle1:=1;
mm1:= 'ergaenz.sav';
iii:=spssOpenRead(mm1,handle1);
showmessage(inttostr(iii));
end;
Es führt immer zu einem Programmabbruch:
Exception der Klasse $C000005 mit der Meldung: „
access violation“…
Da es in der
DLL auch noch andere Funktionen gibt, die mit Integer-Werten arbeiten,
habe ich diese Funktionen mal getestet und bekomme vernünftige Werte zurückgeliefert,
so dass der Fehler „nur“ in der String-Übergabe zu suchen ist.
Ich habe doch Pointer-Variablen für die Übergabe verwendet, kann mir jemand helfen?