Ich habe auf dieser Seite gelesen, dass dynamische Arrays die ShareMem-Einheit benötigen, um richtig zu funktionieren.
Ich möchte jedoch eine DLL für andere Sprachen öffnen.
Kann mir jemand sagen, wie ich die Funktion und ihre Parameter deklarieren kann, um das Array von String zu übergeben?
Ist so etwas wirklich nicht ohne ShareMem erlaubt?
%Vor%Danke für Ihre Hilfe!
Ein dynamisches Array von Strings ist bereits ein Array von PWideChar/PAnsiChar
(für WideString or UnicodeString/AnsiString
).
Dieses dynamische Array kann direkt aus den meisten Sprachen ohne Speicherkopie als Array von PWideChar/PAnsiChar
:
Vom Aufrufer:
%Vor%Von dll:
%Vor% Von einer C-DLL können Sie zum Beispiel char **argv
anstelle von PPAnsiCharArray
und void **argv
anstelle von PPWideCharArray
verwenden.
Dann können Sie einfach den PWideChar/PAnsiChar
in den nativen String-Typ der Sprache zurück konvertieren.
Wenn Sie nur eine Delphi-DLL schreiben müssen, können Sie
verwenden %Vor%oder sogar
%Vor%