Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Standardunits in dll einbinden (https://www.delphipraxis.net/153511-standardunits-dll-einbinden.html)

xml99 6. Aug 2010 12:43

AW: Standardunits in dll einbinden
 
Hallo himitsu,

Ok, habe verstanden. Also ist SimpleShareMem (das abgespeckte FastMM4??) nötig um gemeinsamen Speicher, ohne zusätzliche dll zu verwalten. Der Beitrag aus Hallvard's Blog suggerierte mir, dass das Einbinden einer zusätzlichen unit seit Delphi 2007 nicht mehr nötig wäre.

Werde es später ausprobieren. Noch eine kleine Nachfrage: wenn ich statt SimpleShareMem FastMM4 einbinde habe ich ja auch einen MM, der keine dll zusätzlich benötigt. Gibt es hier Erfahrungswerte für die verschienen conditionals für die exe und die dll? Hast Du vielleicht sogar Beispiele, wie man die FastMM4-include ändern sollte um gute Ergebnisse für Debug/Release zu erzielen?

Danke und Grüße
Ralf

himitsu 6. Aug 2010 13:08

AW: Standardunits in dll einbinden
 
Die DLL war eigentlich nie nötig, aber diese stellt als seperate globale DLL eine sichere Methode dar, um problemlos zu sharen, da sie immer als "erstes" (vor der EXE und der anderen DLL) geladen wird.

Problem:
versuche mal den Speicher zwischen 2 dynamisch geladenen DLLs (nicht mit der EXE, sondern nun zwischen den DLLs) zu sharen.

- erste DLL laden
- diese läd ihren MM
- zweite DLL laden
- diese nutzt nun den MM der Ersten
- erste DLL entladen
- diese nimmt ihren MM mit
- in zweiter DLL kracht es nun, da der MM weg ist
Das Problem hat man auch mit FastMM (ohne extra DLL für die MM-Verwaltung)


Die Unit Delphi-Referenz durchsuchenSimpleShareMem enthält auch nur die Funktionsaufrufe für Delphi-Referenz durchsuchenShareMemoryManager und Delphi-Referenz durchsuchenAttemptToUseSharedMemoryManager
und vereinfacht so deren Aufruf, da man sich selber nicht soeine Unit basteln muß, denn ein externer/anderer MM kann nur geladen werden, wenn der Eigene noch nicht gestartet/benutzt wurde.

Klar kannst du einen neueren/größeren FastMM nutzen, aber auch diesen mußt du, irgendwo in der Options.inc (oder wie die nochmal heißt) dieses aktivieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:55 Uhr.
Seite 2 von 2     12   

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