Search  
Friday, May 25, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Clase - VCX si PRG  Eliberare memor...
 Eliberare memorie ocupată de obiecte
 
 10/3/2011 2:49:09 PM
User is offlineoviciandrus
762 posts
www.comptech.ro
1st




Eliberare memorie ocupată de obiecte
 (N/A) Modified By oviciandrus  on 10/3/2011 2:50:09 PM)
Salut!

Am obiectul oApp de tip custom. Acesta se instanţiază o singură dată la pornirea aplicaţiei. Ceva de genul:

_SCREEN.AddProperty('oApp', CreateObject('application'))

In Initul clasei application am:

this.collToolBars = CreateObject('toolbarsmanager')

unde clasa toolbarsmanager se ocupă de afişarea/ascunderea de toolbar-uri, sincronizarea toolbar-urilor cu formularele etc şi este bazată pe clasa VFP "collection". Din când în când se adaugă câte un toolbar la aplicaţie:

_SCREEN.oApp.collToolBars.Add(loNewToolBar, lcToolBarKey)

Este evident că referirea la un toolbar se face cu : _SCREEN.oApp.coolToolBars.Item(lcToolBarKey)

Am următoarele întrebări/nelămuriri:

1) eliberarea memoriei ocupate de obiectului oApp, care este legat de _SCREEN trebuie făcută explicit sau se face automat dacă zic CLEAR ALL după READ EVENTS; aş putea testa asta :)
2) dacă oApp are referinţa către obiectul "collection" collToolBars care la rândul lui conţine referinţe către formuri toolbar, la eliberarea memoriei ocupate de oApp se eliberează memoria ocupată de colecţie şi de toolbaruri sau trebuie să mă ocup explicit de eliberarea memoriei; am văzut în Destroy-ul lui oApp că valoarea lui collToolBars este .NULL.
3) mai general, când o referinţă la un obiect iese din domeniul de vizibilitate se eliberează memoria referită? dar memoria referită de proprietăţi de tip obiect ale obiectului iniţial? Programatorul trebuie să se îngrijească să lase curat folosirea obiectelor.

Mulţumesc!

 10/3/2011 3:04:55 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Eliberare memorie ocupată de obiecte
 (N/A)
VFP are un garbage collector care elimina memoria alocata si care ruleaza cand vrea el. Din experienta mea - isi face treaba suficient de bine - nu-i nevoie sa te amesteci acolo.

In alta ordine de idei - n-am putut sa nu zambesc in sinea mea cand am vazut arhitectura pe care o folosesti. Buna treaba. Meniurile le-ai rezolvat tot asa? Daca nu (sau nu inca) as putea sa-ti arat un manager de-ala care iti permite sa accesezi meniul cam asa:
App.MenuMgr.Menus(1).PadDocumente.BarNir.Click(), respectiv App.MenuMgr.Menus(1).PadFile.BarOptiuni.Visible = .F.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 10/3/2011 3:11:24 PM
User is offlineoviciandrus
762 posts
www.comptech.ro
1st




Re: Eliberare memorie ocupată de obiecte
 (N/A)
:)

Stai că n-am înţeles .... ai zâmbit că-i de bine sau de rău? Că dacă-i de rău să schimb până nu-i prea târziu! :)
 10/3/2011 3:37:32 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Eliberare memorie ocupată de obiecte
 (N/A)
Nu nu, scuze; am zambit de bine. Exact asa am si eu in aplicatii.
Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 10/3/2011 4:00:20 PM
User is offlineoviciandrus
762 posts
www.comptech.ro
1st




Re: Eliberare memorie ocupată de obiecte
 (N/A)
Cred că-i tare clasa aia! Şi mai cred că-ţi uşurează viaţa la chestiile alea în care userii au dreptul să vadă/folosească doar anumite oţiuni din sistemul de meniuri. Dacă se poate, sunt interesat să folosesc clasa, mai ales că sunt la începutul proiectării arhitecturii aplicaţiei.



 10/3/2011 5:58:57 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Eliberare memorie ocupată de obiecte
 (N/A)
Sigur ca da. Va trebui sa vedem cum facem, fiindca in cazul meu clasa face parte dintr-un framework care ofera mai multe servicii si astea sunt intretesute prin codul din clase.
Uite un exemplu:

App.LanguageMgr.LoagLanguage("en-us")
App.MessageMgr.LoadStrings()
*-- aplicatia e in engleza
App.LanguageMgr.LoadLanguage("ro-ro")
App.MessageMgr.LoadStrings()
*-- aplicatia e in romana

Chestia asta se intampla on-the-fly (adica si meniurile se traduc in clipa aia) ceea ce se poate obtine numai daca si clasa meniu e pregatita sa faca asta (concret - are niste apeluri in alta parte). Si daca-ti dau vcx-ul o sa-ti dea erori.

Lasa-ma sa ma gandesc la asta, ok? vb maine.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 10/3/2011 6:20:04 PM
User is offlineoviciandrus
762 posts
www.comptech.ro
1st




Re: Eliberare memorie ocupată de obiecte
 (N/A)
Sau, dacă crezi că e mai simplu, dă-mi doar lista cu proprietăţile şi metodele apoi o să mă străduiesc să implementez clasa.

Mulţumesc!
  Visual FoxPro  Clase - VCX si PRG  Eliberare memor...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement