Ich habe eine
DLL in Delphi 10 die eien String zurückgeben soll. Das ganze soll (muss) in einer D6 Anwendung geladen wewrden.
sharemem ist als erstes in den uses eingebunden, der String ist als ansistring definiert.
Der String wird zwar in D6 richtig angezeigt, beim Beenden der Funktion kommt es aber zu einem Speicherzugriffsfehler.
Was ist da noch zu beachten?
In Delphi 10:
function ExportString: ansistring; export;
begin
result := 'Hallo'
end;
In D6:
procedure TForm1.Button1Click(Sender: TObject);
type TStringFunction = function: ansistring;
var StringFunction: TStringFunction;
h: hmodule;
p: pointer;
begin
h := LoadLibrary(pchar('s:\D\Delphi\Test.dll'));
if h <> 0 then
begin
p := GetProcAddress(h, 'ExportString');
form1.tag := integer(p);
@StringFunction := p;
form1.caption := StringFunction; // Klappt noch
end;
end; // hier kracht es