Consumo de recurso

Consumo de recurso

Postby fgondi » Thu Jan 27, 2011 7:03 pm

Comprobando el resultado de CheckRes() he detectado que nos vacian algunos elementos.

creo que habría que incluir:

TOutlook2003: oHeader no se destruye
Code: Select all  Expand view  RUN
METHOD Destroy() CLASS TOutLook2003
....
   ::oHeader:Destroy()     //... fgondi
return Super:Destroy()
 


Ttabs: oFont y oBold no se destruyen
Code: Select all  Expand view  RUN
METHOD Destroy() CLASS TTabs
...
   ::oFont:End()   //... fgondi
   ::oBold:End()   //... fgondi
return nil
 


Ttabas: Por ejemplo al añadir un elemento (AddItem) o al borrar un elemento (DelItem) se llama al método Default y dentro de este método se recargan las imagenes contenidas en ::acBitmaps.
Me parece correcto que se recargen las imagenes por si han variado, pero antes de debería limpiar las imagenes ya existentes.
Code: Select all  Expand view  RUN
METHOD Default() CLASS TTabs
...
//... Comienzo fgondi
   if Valtype(::ahBitmaps)='A'
     for n := 1 to len( ::ahBitmaps )
       if ::ahBitmaps[ n ] != nil
         DeleteObject( ::ahBitmaps[ n ] )
       endif
     next
   endif
//... Final fgondi
   ::ahBitmaps = Array( Max( Len( ::acBitmaps ), Len( ::aPrompts ) ) )
...
 
Un saludo
Fernando González Diez
ALSIS Sistemas Informáticos
User avatar
fgondi
 
Posts: 694
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España

Re: Consumo de recurso

Postby nageswaragunupudi » Sun Feb 06, 2011 7:16 am

Mr. fgondi

Thank you. I appreciate your suggestions about TOutlook2003 and font objects of TTabs.

But I am not able to understand about ::ahBitmaps. I think that before execution of this line in Initiate() method
Code: Select all  Expand view  RUN
  ::ahBitmaps = Array( Max( Len( ::acBitmaps ), Len( ::aPrompts ) ) )
 

::ahBitmaps is always nil. Can you explain to me under what circumstances ahBitmaps can be an array with valid bitmaps, before execution of this code? Please advise me if I am missing something.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10690
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Consumo de recurso

Postby fgondi » Mon Feb 07, 2011 11:36 am

Ejemplo:
Code: Select all  Expand view  RUN

function Main()

   local oWnd, oTabs1, oBtn

   SetResDebug( .t. )

   DEFINE WINDOW oWnd TITLE "Testing FiveWin Tabs" ;
      COLOR CLR_WHITE, CLR_BLUE

   @ 8, 0 TABS oTabs1 PROMPTS "&One", "&Two", "T&hree", "&Four" OF oWnd ;
      BITMAPS "..\bitmaps\16x16\people.bmp", "..\bitmaps\16x16\open2.bmp",;
              "..\bitmaps\16x16\print.bmp", "..\bitmaps\16x16\zoom2.bmp" ;
      ACTION oWnd:Say( 5, 5, oTabs1:nOption )
   
   oWnd:oTop = oTabs1

   @ 5, 5 BUTTON oBtn OF oWnd Size 50, 50 Action oTabs1:AddItem('Five')

   
   ACTIVATE WINDOW oWnd
   
   FERASE("CHECKRES.TXT")
   CHECKRES()
return nil
 


Si ejecutamos este ejemplo y luego lo cerramos, obtenemos como resultado en checkres.txt lo siguiente:
Code: Select all  Expand view  RUN
02/07/11 12:30:57: FONT,-1593173209,TTABS:NEW(177)->MAIN(19)
   
02/07/11 12:30:57: ==================================================================================================== 
 

No deja rasto de las imagenes usadas.

Ahora ejecutamos el ejemplo y pulsamos en el botón, que lo único que hace es añadir una nueva pestaña al tabs. Al cerrar la aplicación obtenemos lo siguiente:
Code: Select all  Expand view  RUN
02/07/11 12:33:05: FONT,-1207297722,TTABS:NEW(177)->MAIN(19)
   
02/07/11 12:33:05: BMP,-284879290,TTABS:NEW(198)->MAIN(19)
   
02/07/11 12:33:05: BMP,1728388266,TTABS:NEW(198)->MAIN(19)
   
02/07/11 12:33:05: BMP,1476731723,TTABS:NEW(198)->MAIN(19)
   
02/07/11 12:33:05: BMP,33890123,TTABS:NEW(198)->MAIN(19)
   
02/07/11 12:33:05: ==================================================================================================== 
 


El motivo es que en el método AddItem se llama al método Default
Code: Select all  Expand view  RUN
METHOD AddItem( cItem ) CLASS TTabs

...
   ::Default()
...

return nil
 


Y en el método default vuelve a recargar las imagenes sin controlar si estas ya estaban cargadas en ahBitmaps:
Code: Select all  Expand view  RUN
METHOD Default() CLASS TTabs
...
   ::ahBitmaps = Array( Max( Len( ::acBitmaps ), Len( ::aPrompts ) ) )
   for n = 1 to Len( ::acBitmaps )
      if ValType( ::acBitmaps[ n ] ) == "C"
         if File( ::acBitmaps[ n ] )
            ::ahBitmaps[ n ] = ReadBitmap( 0, ::acBitmaps[ n ] )
         else
            ::ahBitmaps[ n ] = LoadBitmap( GetResources(), ::acBitmaps[ n ] )
         endif
      endif
   next
...
return nil
 
Un saludo
Fernando González Diez
ALSIS Sistemas Informáticos
User avatar
fgondi
 
Posts: 694
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España

Re: Consumo de recurso

Postby nageswaragunupudi » Tue Feb 08, 2011 2:50 am

Thank you for the explanation and suggestions.
Fixed in release 11.1
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10690
Joined: Sun Nov 19, 2006 5:22 am
Location: India


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 125 guests