Verwende für die
DLL-Routinen
ausschließlich Parameter vom Typ Widestring um Text zu übergeben oder zurückzubekommen. Widestring ist ein wrapper um den
OLE BSTR Typ und Delphi verwaltet den Speicher dafür automatisch unter Verwendung der entsprechenden
COM APIs und da verwenden Host app und
DLL auch den gleichen Allocator. Mit pChar/pAnsichar kann man zwar Text an eine
DLL übergeben aber nicht so einfach Text zurückgeben. Dafür müßte die Host app der
DLL nicht nur einen Speicherblock zum füllen übergeben sondern auch dessen Größe, so dass die
DLL weis, wieviel hineinpasst. Falls keine sinnvolle maximale Größe für den Block existiert muß die
DLL die benötigte Größe zurückgeben, damit der Host für einen zweiten Aufruf den Block entsprechend anlegen kann. Viele Windows-APIs sind so gestrickt wenn sie Daten variabler Größe zurückgeben müssen.