Einzelnen Beitrag anzeigen

peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
672 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: String mit .dll ohne borlndmm.dll

  Alt 31. Okt 2023, 15:10
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.
Peter Below
  Mit Zitat antworten Zitat