Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ShareMem vs. FastShareMem (https://www.delphipraxis.net/70971-sharemem-vs-fastsharemem.html)

Baeuerle 7. Jun 2006 14:04


ShareMem vs. FastShareMem
 
Hallo zusammen,

ich habe folgendes Problem. Ich würde gerene FastShareMem einsetzten, wenn ich dies jedoch mache, erhalte ich beim schliessend er Anwendunge eine Exception C0000005. Beim Einsatz von ShareMem erhalte ich diese Fehlermeldung nicht!!

Es bleibt mir also nichts anderes übrig als ShareMem einzusetzten. Kennt jemand ein ähnliches Problem oder weiß eine Abhilfe???

Ich setze FastShareMem 2.10 ein.

Bin dankbar für alle Tipps

Baeuerle

Bernhard Geyer 7. Jun 2006 14:06

Re: ShareMem vs. FastShareMem
 
Schon mal FastMM probiert?
Kann glaube ich auch das Sharen von Speicher zwischen Exe und DLL.

himitsu 7. Jun 2006 14:20

Re: ShareMem vs. FastShareMem
 
Zitat:

Zitat von Bernhard Geyer
Kann glaube ich auch das Sharen von Speicher zwischen Exe und DLL.

Das kann es, aber das muß auch erst eingeschalten werden ... ich glaub in FastMMOptions.inc sollte da was zu finden sein ... und ließ dir da alles durch, denn es wird bestimmt nicht nur einwas sein, was du umstellen mußt.

Und falls(da) im FastMM auch Fehler drin sind ... einfach mal im Foum suchen, es sollten eine Tipps zu deren Behebung vorhanden sein.

Baeuerle 7. Jun 2006 15:08

Re: ShareMem vs. FastShareMem
 
Hallo,

danke für eure Antworten. Ich habe jetzt FastMM Version 4.66 eingebunden.

Und die Optionen
Delphi-Quellcode:
{$DEFINE ShareMMIfLibrary}
{$DEFINE AttemptToUseSharedMM}
aktiviert die für Share Memory nötig sind. Die Anwendung lässt sich ohne Probleme kompilieren die Dll bringt jedoch sofort einen Runtime Error 217.

Hat jemand eine Idee ???

Bernhard Geyer 7. Jun 2006 15:11

Re: ShareMem vs. FastShareMem
 
Die DLL auch damit FastMM kompiliert?

Baeuerle 7. Jun 2006 15:19

Re: ShareMem vs. FastShareMem
 
Ja, habe ich. Trotzdem tritt der Runtime Error auf.

Das einzigste was bisher Fubktioniert ist mit ShareMem. Davon möchte ich aber werg, weil dies anscheinend zu langsam ist. ( Wird hier hier ja schon mehrfach beschrieben )

Baeuerle 8. Jun 2006 07:31

Re: ShareMem vs. FastShareMem
 
Kann sich bitte nochmal jemand diesem Problem annehmen, ich benötige eure hilfe.

Kann der Runtime Error duch speicherleaks entstehen???

RavenIV 8. Jun 2006 07:42

Re: ShareMem vs. FastShareMem
 
Zitat:

Zitat von Baeuerle
Hallo,

danke für eure Antworten. Ich habe jetzt FastMM Version 4.66 eingebunden.

Und die Optionen
Delphi-Quellcode:
{$DEFINE ShareMMIfLibrary}
{$DEFINE AttemptToUseSharedMM}
aktiviert die für Share Memory nötig sind. Die Anwendung lässt sich ohne Probleme kompilieren die Dll bringt jedoch sofort einen Runtime Error 217.

Hat jemand eine Idee ???

Den RuntimeError 217 kannst Du mit ShareMem verhindern.
Aber ganau das willst Du ja nicht benutzen.

Ist die FastMM auch überall als erste Unit eingebunden? Auch im *.dpr?

rochus 8. Jun 2006 07:46

Re: ShareMem vs. FastShareMem
 
Hi:

http://www.delphifaq.com/faq/f84.shtml

Vielleicht hilft dir das was. Nutzt du initialization und finalization Teile?


Gruß

Baeuerle 8. Jun 2006 07:48

Re: ShareMem vs. FastShareMem
 
Was heißt jetzt überall?

Ich habe Sie in der Anwendung.dpr und in der dll.dpr als erste eingetragen. In den weiteren Units habe ich FastMM nicht mehr in die uses eingetragen. So weit ich das verstanden habe muss ich das auch nicht oder doch?

himitsu 8. Jun 2006 07:49

Re: ShareMem vs. FastShareMem
 
Zitat:

Zitat von Baeuerle
Kann der Runtime Error duch speicherleaks entstehen???

Ein Speicherleak kann soeinen Fehler eigentlich nicht auslösen, denn dieses sind ja nur "vergessene" (nicht wieder freigegebene) Speicherblöcke ... warscheinlicher wäre da ein BufferOverlow, oder Speichern in "falschen" Speicherbereichen.

Hast du mal den FullDebugMode getestet?

Baeuerle 8. Jun 2006 07:50

Re: ShareMem vs. FastShareMem
 
@rochus: Ja ich habe teilweise in den initialisierungen bzw. finali.. code stehen. warum? Macht das einen unterschied?

Baeuerle 8. Jun 2006 07:52

Re: ShareMem vs. FastShareMem
 
@himitsu: habe ich getestet hat mir nur ein paar speicherleaks angezeigt (ca. 80Byte) nciht ganz so schlimm :roll:

RavenIV 8. Jun 2006 07:55

Re: ShareMem vs. FastShareMem
 
Zitat:

Zitat von Baeuerle
Was heißt jetzt überall?

Ich habe Sie in der Anwendung.dpr und in der dll.dpr als erste eingetragen. In den weiteren Units habe ich FastMM nicht mehr in die uses eingetragen. So weit ich das verstanden habe muss ich das auch nicht oder doch?

Vielleicht solltest du alle anderen Units in den Uses überprüfen, ob dort irgendwo die Sharemem eingetragen ist...

himitsu 8. Jun 2006 07:56

Re: ShareMem vs. FastShareMem
 
[quote="Baeuerle"]Was heißt jetzt überall?
Als erste Unit in den .DPRs reicht eigentlich aus (solange sich nichts anderes am MemoryManagement zu schaffen macht.

Zitat:

Zitat von Baeuerle
@rochus: Ja ich habe teilweise in den initialisierungen bzw. finali.. code stehen. warum? Macht das einen unterschied?

nicht unbedingt ... es kommt darauf ann was, aber normaler Weise sollte es keinen Unterschied machen.

Baeuerle 8. Jun 2006 07:59

Re: ShareMem vs. FastShareMem
 
ShareMem ist nirgends eingetragen.

So jetzt mal noch was ganz dummes, kann FastMM 4.66 mit Delphi4 genutzt werden? Ich habe das Projekt nämlich noch nicht nach Delphi2005 portiert.

himitsu 8. Jun 2006 08:17

Re: ShareMem vs. FastShareMem
 
Sollte es jedenfalls noch, aber wenn nicht ... hab hier noch ein FastMM v4.26, dieses lief/läuft unter D4.

Baeuerle 8. Jun 2006 08:29

Re: ShareMem vs. FastShareMem
 
Ok,

ich bin der sache schon näher gekommen. Folgendes Problem:

In der initialisierung einer Unit wird ein Object erzeugt (TRegister) das Objekt kapselt funktionen aus einer anderen *.dll.

Die *.dll enthält Funktionen von einem Tool das nicht mehr weiter unterstütz wird (nur bis D3). Wenn ich jetzt einen String an das Objekt bzw. die *.dll übergebe kracht es.

Ich könnte jetzt versuchen, das Objekt an einer anderen Stelle zu erzeugen vielleicht geht es dann. Habe auch schon versucht FastMM in die zweite dll einzubinden. bringt leider keinen unterschied.

Baeuerle 8. Jun 2006 09:50

Re: ShareMem vs. FastShareMem
 
A :cry:

Habe jetzt aufgegeben und bleibe bei ShareMem funktioniert immerhin !!!

Mit FastMM bekomme ich eine EInvalidPointer Exception aus einer externen dll die nicht von mir stammt und ich somit keine möglichkeit habe etwas zu verändern.

Wenn ich das per try except verhindere kommen noch an anderen stellen Probleme Exceptions hoch. Ich lasse lieber die Finger davon.

Danke für eure bemühungen.

rochus 8. Jun 2006 12:58

Re: ShareMem vs. FastShareMem
 
Zitat:

Zitat von Baeuerle
@rochus: Ja ich habe teilweise in den initialisierungen bzw. finali.. code stehen. warum? Macht das einen unterschied?

Hi!

Ja, das könnte was ausmachen. Wenn du meinem Link gefolgt wärst, hättest du folgende Zeilen lesen können:

Zitat:

Zitat von link s.o.
In fact, Delphi executables will die with runtime error 217 when an exception was raised before SysUtils is initialized or after it is finalized. In both situations the regular exception handling is not put in place.

If the error occurs right at your application's startup, check your initialization sections. Try to move code into a later part, e.g. into FormCreate() events.
Otherwise check your units' finalization sections.


Gruß

himitsu 8. Jun 2006 13:11

Re: ShareMem vs. FastShareMem
 
Da FastMM aber die Units, wo er seine Initialisierungsabschnitte drin hat aufruft, werden diese Initialisierungen immer erst nach dem Installieren des FastMM ausgeführt,
da die Initialisierungsabschnitte in der Reinfolge aufgerufen werden, wie sie eingebunden sind (rekursive Units vor denen, worin sie eingebunden sind).

Also wenn FastMM die erste Unit in der DPR ist, dann kann sich nichts Anderes (abgesehn von SysInit und System) zuvor initialisieren.


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