Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Von ShareMem zu FastMM4 (https://www.delphipraxis.net/114749-von-sharemem-zu-fastmm4.html)

geskill 30. Mai 2008 15:38


Von ShareMem zu FastMM4
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
derzeit benutze ich noch ShareMem zum übergeben von mehrzeiligen, langen Strings.
Jedoch benötigt das Programm eine DLL, dann habe ich etw. "gegooglet" und traf auf FastMM4.

So, und jetzt funktioniert es nicht mehr, das Verfahren ist das gleiche wie bei ShareMem,
in der Application.dpr + DLL.dpr muss in der uses deklaration jeweils als erstes FastMM4 stehen.

Ich habe auch etw. getestet:
Application.dpr "ShareMem" mit DLL.dpr "ShareMem" funktioniert
Application.dpr "ShareMem" mit DLL.dpr "FastMM4" funktioniert nicht // natürlich blödsinn!!
Application.dpr "FastMM4" mit DLL.dpr "FastMM4" funktioniert nicht
Application.dpr "FastMM4" mit DLL.dpr "ShareMem" funktioniert mit Fehlermeldung // natürlich blödsinn!!

Daraus erschließe ich das der Fehler "eher" was mit der DLL zu tun hat...

Ich habe ein Bilder der Zugriffsverletzung angehängt. Wäre nett wenn sich das mal einer anschaut ;-)

shmia 30. Mai 2008 16:05

Re: Von ShareMem zu FastMM4
 
Natürlich muss in der Applikation und der DLL nur die FastMM Unit eingebunden werden.
Die Unit ShareMem darf nirgends auftauschen (bitte Sourcecode durchsuchen).


Wenn du jetzt trotzdem eine Zugriffsverletzung hast, dann liegt es zu 99% nicht an FastMM, sondern an deiner Anwendung oder DLL.
Edit: dat stimmt so nicht, denn mit ShareMem tut es ja.

geskill 30. Mai 2008 16:22

Re: Von ShareMem zu FastMM4
 
So ich habs, ich draf die DLL nicht wieder freigeben.
Delphi-Quellcode:
FreeLibrary(hLib);
Was ist das denn für'n "scheiß" ?
Ich rufe normalerweise eine Funktion auf, bekomme einen String, und gebe diese wieder frei,
wieso geht das mit FastMM4 nicht oder wird diese automatisch freigegeben? Selten dähmlich,
sowas hätten die in die ReadMe schreiben können etc...

EDIT:
Aso, jetzt klappt es auch problemlos mit einer EXE mit ShareMem auf eine DLL mit FastMM4
zuzugreifen.

shmia 30. Mai 2008 16:38

Re: Von ShareMem zu FastMM4
 
Schau dir mal die Defines
ShareMM | AttemptToUseSharedMM | ShareMMIfLibrary
in der Datei FastMM4Options.inc an.
Damit hängt es wohl zusammen.

NormanNG 30. Mai 2008 16:43

Re: Von ShareMem zu FastMM4
 
Hi,

auch ´ne Möglichkeit:

Sharemem nimmt es oft nicht so "genau", hier fallen Programmierfehler manchmal nicht direkt auf.
FastMM dagegen prüft, je nach Einstellungen, alle Speicherallocationen und schlägt Alarm.
Der Fehler kann also durchaus in der DLL liegen!
FastMM sollte aber auch ein Log mit den Fehlerstellen schreiben :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:03 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