Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Braucht sharemem mit D11 immer noch die borlndmm.dll?

  Alt 12. Sep 2023, 00:04
Genauer dann, wenn man die Kontrolle von Speicher über DLL-Grenzen hinweg weiter gibt.

z.B. einen String in der EXE oder DLL erstellen, Diesen an die andere DLL übergibt (oder andersrum) und drüben dann etwas mit dem String macht, was dessen Verwaltung betrifft.
* verändern (nicht nur die Chars, sondern so, das auch der Speicher des Strings vergrößert/verkleinert/verschoben/freigegeben wird)
* neuen Text zuweisen
* oder die Variable leeren

Bei PChar's gibt man meistens nur einen Zeiger weiter, wo drüben der nur Inhalt (Chars) gelesen oder eventuell auch überschrieben werden, aber ohne dass der Speichermanager den String selbst bearbeiten muß.


Anders kann man das auch über LaufzeitPackages lösen, wo dann sogar die RTTI und Typen, Funktionen, globale Variablen usw. geshared werden.
-> hier kann man dann also zusätzlich auch noch Delphi-Objekte übergeben.


Bei übergebenen Interfaces, ist sogar selten nötig, da dort im Interface-Objekt Zeiger zu Verwaltungsfunktionen/Speichermanager/usw. des erstellenden Moduls drin hat, womit bei Änderung/Freigabe immer die richtige DLL/EXE/SpeicherManager die Arbeit übernehmen, egal wo das Interface gerade benutzt wird-




Außerdem helfen ShareMem, SimpleShareMem und Co. auch nur zwischen Delphi-DLL/EXE.
Oder zu anderen Systeme ala C++Builder oder fremde C++, welche ebenfalls die Schnittstelle des (Simple)ShareMem implementieren/benutzen "könnten".
(aber normal nutzt das nur Delphi untereinander ... und vielleicht noch FreePascal)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (12. Sep 2023 um 00:07 Uhr)
  Mit Zitat antworten Zitat