Dein ganzer Code ist ziemlich umständlich. Normalerweise macht man das so:
Delphi-Quellcode:
var
Len: LongInt;
Buf:
array of AnsiChar;
begin
Test(
nil, @Len);
SetLength(Buf, Len);
FillChar(Buf[0], SizeOf(Buf), #0);
// -> je nachdem, ob die Dll-Funktion selbstständig nullterminiert, oder nicht
Test(@Buf[0], @Len);
Zum Fehler bei
test2
führt, dass du deine Rückgabe mit
StrPas
einem normalen String zuweist. In deiner Delphi-Version sind Strings aber
Unicode und nicht
ASCII.