Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.197 Beiträge
 
Delphi 12 Athens
 
#4

AW: Dynamisches Array of record exportieren

  Alt 14. Aug 2011, 08:28
ShareMem ist dafür da, wenn man "verwalteten" Speicher über DLL/EXE-Grenzen hinweg nutzt,
da z.b. der String im Delphi-MemoryManager verwaltet wird und jede DLL oder EXE grundsätzlich erstmal ihren eigenen MemoryManager mitbringt.

In der DLL einen String erzeugen (wird im MM der DLL verwaltet) und diesen dann in der EXE oder einer anderen DLL verändern/freigeben knallt natürlich, da Delphi dort versicht den "lokalen" MemoryManager der anderen EXE/DLL zu nutzen.

Genauso ist das z.B. mit der RTTI, weswegen man keine Klassen über DLL/EXE-Grenzen hinweg nutzen darf.

Außer bei BPLs, welche den Speichmanager und die RTTI gemeinsam nutzen (ähnlich zu ShareMem).



An deiner Stelle würde ich aber auf Interfaces ausweichen.

PS: Den WideString kann man überall nutzen, da dieses kein richtiger Delphi-Typ ist.
Und WideChar kann man sowieso überall nutzen.
WideString = Umleitung zu MSDN-Library durchsuchenSysAllocStringLen, MSDN-Library durchsuchenSysReAllocStringLen, MSDN-Library durchsuchenSysFreeString und MSDN-Library durchsuchenSysStringLen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat