Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Braucht sharemem mit D11 immer noch die borlndmm.dll? (https://www.delphipraxis.net/213699-braucht-sharemem-mit-d11-immer-noch-die-borlndmm-dll.html)

softtouch 11. Sep 2023 19:28

Braucht sharemem mit D11 immer noch die borlndmm.dll?
 
Wenn ich sharemem nutze, brauche ich immer noch die borlndmm.dll?
Ich hatte schon simplesharemem versucht, aber es gibt immer eine AV beim Programm Ende, nicht so mit sharemem.

himitsu 11. Sep 2023 19:34

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

* BorlandMM war der Borland-MemoryManager
* Delphi nutzt aber seit ewig den FastMM (eine angepasste/abgespeckte Variante ... aber gibt auch noch den Großen)

und
* Delphi-Referenz durchsuchenSimpleShareMem sollte per se funktionieren.
https://docwiki.embarcadero.com/RADS...g_von_Speicher


Ist es denn auch die erste Unit, in beiden DPR?
Und gibst du in DLL/EXE auch alles wieder ordentlich frei?


Unterschied ShareMem vs. SimpleShareMem
* das Eine nutzt eine externe DLL, nur für den Speichermanager, welche von beiden EXE/DLL benutzt wird
* das andere Simple nutzt den Speichermanager, welcher zuerst geladen wird (bei statisch gelinkter DLL meistens den der eigenen DLL) und der Zweite wird dahin umgeleitet

softtouch 11. Sep 2023 19:38

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

Zitat von himitsu (Beitrag 1526773)
Doppelt Nein.

* BorlandMM war der Borland-Speichermanager
* Delphi nutzt aber seit ewig den FastMM

und
* Delphi-Referenz durchsuchenSimpleShareMem

Komisch. Wenn ich sharemem nutze, und die exe sowie dll auf einem Rechner kopiere wo kein Delphi installiert ist/war, es also nirgends eine borlndmm.dll gibt, gibts einen System Error mit "The code execution cannot proceed because borlndmm.dll was not found."

sharemem ist als ersten in der dll, sowie als erstes auch in der exe im .dpr file.

himitsu 11. Sep 2023 19:42

AW: Braucht sharemem mit D11 immer noch die borlndmm.dll?
 
Ja, siehe die letzten beiden Punkte. (hatte oben noch was nachgetragen)

himitsu 11. Sep 2023 19:48

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

Zitat von softtouch (Beitrag 1526774)
und die exe sowie dll auf einem Rechner kopiere wo kein Delphi installiert ist/war, es also nirgends eine borlndmm.dll gibt, g

https://www.delphipraxis.net/207151-...s-sandbox.html

softtouch 11. Sep 2023 19:49

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

Zitat von himitsu (Beitrag 1526776)
Zitat:

Zitat von softtouch (Beitrag 1526774)
und die exe sowie dll auf einem Rechner kopiere wo kein Delphi installiert ist/war, es also nirgends eine borlndmm.dll gibt, g

https://www.delphipraxis.net/207151-...s-sandbox.html

:D Da habe ich auch gerade dran gedacht, da alle meine VM/PC's/Laptops Delphi schon installiert haben, und damit auch die borlndmm.dll.

softtouch 11. Sep 2023 19:56

AW: Braucht sharemem mit D11 immer noch die borlndmm.dll?
 
Also wenn ich sharemem in der Windows Sandbox nutze, gibts die System Error exception das borlndmm.dll fehlt. Nutze ich simplesharemem, scheint es zu funktionieren.

Andreas13 11. Sep 2023 20:10

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

Zitat von himitsu (Beitrag 1526773)
Eigentlich Nein. ...

Und wie ist es, wenn Delphi-DLL's Strings an Excel übergeben?

himitsu 11. Sep 2023 20:14

AW: Braucht sharemem mit D11 immer noch die borlndmm.dll?
 
Erstmal werden es dort bestimmt keine Delphi-LongStrings, sondern OleVariant oder WideString sein
und Jene nutzen den BSTR im Speichermanager der OleAut32.dll (SysAllocString und Co.)

Andreas13 11. Sep 2023 21:08

AW: Braucht sharemem mit D11 immer noch die borlndmm.dll?
 
Danke Himitsu!
Ich benutze bisher für die Excel-DLL's
Delphi-Quellcode:
PAnsiChar
&
Delphi-Quellcode:
ShareMem
(dieses benötigt BorlndMM.dll). Ohne
Delphi-Quellcode:
ShareMem
habe ich es noch nicht probiert.

jaenicke 11. Sep 2023 22:33

AW: Braucht sharemem mit D11 immer noch die borlndmm.dll?
 
Sharemem brauchst du ausschließlich dann, wenn ein Delphiprogramm eine Delphi-DLL lädt und dorthin zum Beispiel Delphi-Strings übergibt statt PAnsiChar, PWideChar oder WideString.

himitsu 11. Sep 2023 23:04

AW: Braucht sharemem mit D11 immer noch die borlndmm.dll?
 
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)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz