Die borlndmm.dll wird sowieso schon seit Jahrzehnten nicht mehr benötigt.
SimpleShareMem anstatt
ShareMem.
https://docwiki.embarcadero.com/RADS...g_von_Speicher
DLLs oder EXE ... der, welcher im gemeinsamen Prozess zuerst da ist, dessen Speichermanager wird verwendet.
(bzw. es wird geguckt ob schon wer Anderes da ist, also ob jeweils der Fremde oder der eigene Manager genutzt wird)
WideString (BSTR des OleAut) und ShortString (ein Record) können problemlos geshared werden, da sie nicht den Speichermanager des Delphi benutzen.
PAnsiChar als Parameter (zum Lesen) ist kein Problem.
Als Result muß man dafür sorgen, dass der Speicher (also z.B. der Quell-String) auch nach Funktionsende noch erhalten bleibt, also außerhalb der Funktion gespeichert.
Probematisch ist ein PChar zum Schreiben, denn da muß auf der anderen Seite ausreichend Speicher bereits reserviert sein, bzw. es gibt eine Funktion zum Reservieren.