Seite 1 von 1

Variablen

Verfasst: Do, 05. Nov 2015 13:46
von Koverhage
Ich habe das problem, dass unsere Anwendung nach dem Start immer langsamer wird und wollte der Sache mit MEMWATCH auf dem Grund gehen.
Im Fenster PUBLICS
stehen, z.B.

GetList
PromptList
oDesktop
dCCOLOR

GetList benutze ich, ist aber überall als Local deklariert, die anderen benutze ich nicht
Habe auch im Quellcde keine PUBLIC Deklarationen gefunden außer für dCCOLOR in _dccolor.prg
welches ich auch nicht benutze, aber vermutlich dann von Express++ irgendwo.

Woher können die Publics kommen ?

Eventuell liegt es auch am ToolTip Sytem, aber das möchte ich wenn möglich nicht deaktivieren.

Re: Variablen

Verfasst: Do, 05. Nov 2015 14:11
von Tom
Hallo, Klaus.

Wenn Du die Quellcodes von eXpress++ durchsuchst, wirst Du feststellen, dass diese Variablen zwar erzeugt, aber nahezu ausschließlich als LOCALs verwaltet werden. "PromptList" beispielsweise wird von "DC_MenuTo()" verwendet, aber als Parameter. Auch das Tooltip-System macht das nicht. "GetList" oder "oDialog" sind immer Parameter.

"dCColor" wird allerdings von "DC_ClrArr()" als PUBLIC erzeugt. Es findet sich im gesamten Quellcode nur an dieser einen Stelle überhaupt das Kommando "PUBLIC". Ich glaube nicht, dass man diese Funktion überhaupt noch verwenden sollte. Sie steht in irgendeiner impliziten Prozedur.

So oder so, vier Publics verlangsamen nicht Deine Software. Allerdings werden Objekte, die von Objekten referenziert werden, die nicht zerstört werden können, weiter im Speicher gehalten. Der GC zerstört sie nicht. So ähnlich verhält es sich in einigen Situationen mit Arrays. Du solltest Deine Dialoge nacheinander aufrufen und schauen, welche den Speicher nicht freigeben.