Einzelnen Beitrag anzeigen

Testsieger

Registriert seit: 23. Nov 2013
22 Beiträge
 
#1

Stringübergabe an C# DLL funzt nicht

  Alt 25. Nov 2013, 08:18
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?
  Mit Zitat antworten Zitat