EXCESS RELEASE OF FONT

Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: EXCESS RELEASE OF FONT

Post by Verhoven »

Te copio el que me mandaste modificado. El problema ha surgido cuando he añadido el LISTBOX.

Code: Select all

#include "FiveWin.ch"

static oWnd
static oFont
static oFont2

function Main()
  public oBru
      
   DEFINE BRUSH oBru COLOR nrgb(0,0,30)
   DEFINE FONT oFont NAME "MS Sans Serif" SIZE 0, -12
   DEFINE FONT oFont2 NAME "MS Sans Serif" SIZE 0, -14 BOLD

   DEFINE WINDOW oWnd TITLE 'PRUEBAFONT' BRUSH oBru MENU MenuPpal() 
        @ 18,10 BUTTON oBtn1 PROMPT 'Fonts Publicas' OF oWnd;
                       ACTION DialogoPublic(oWnd);
                       SIZE 150,40; // Ancho, Alto                                 
                       UPDATE
   ACTIVATE WINDOW oWnd MAXIMIZED
       
   oFont:End()
return nil

function DialogoPublic(oPadre)
  local oDlg, oBtn1
  local oTbr, aRolloCalc:={1,2,3,4,5,6}

   DEFINE DIALOG oDlg OF oPadre FROM 1,10 TO 25,80;


       @ 1, 1 SAY "Pruebas con Fonts" FONT oFont2;
                     COLOR nrgb(0,0,170),nrgb(220,220,220);
                     SIZE 150, 19 ;
                     OF oDlg
                     
       @ 3, 3 LISTBOX oTbr FIELDS ;
                     aRolloCalc;
                     HEAD 'valor' OF oDlg ;
                     FONT oFont2 COLOR  nrgb(0,0,0),nrgb(255,255,200) ;
                     UPDATE                  
                     
       @ 3,30 BUTTON oBtn1 PROMPT 'Salir' OF oDlg;
                       ACTION oDlg:end();
                       SIZE 25,20 ;                                
                       UPDATE
                       
   ACTIVATE DIALOG oDlg CENTERED
return nil
    
static function MenuPpal()
  local oMenu

  MENU oMenu
    MENUITEM '&Publicas' ACTION DialogoPublic(oWnd) MESSAGE 'Opción con variables publicas'
    MENUITEM '&Salida' ACTION oWnd:end() MESSAGE 'Salida del Programa'
  ENDMENU
return oMenu    
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: EXCESS RELEASE OF FONT

Post by Verhoven »

Al pulsar por segunda vez en el botón para entrar en el diálogo la letra ya no es la correcta.
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: EXCESS RELEASE OF FONT

Post by Verhoven »

ESte es el contenido del fichero log con los errores que genera automáticamente el programa:

Code: Select all

12/14/14 16:45:18: EXCESS RELEASE OF FONT MS Sans Serif[ hFont : 0] ( nCount : 0 )
     <-TFONT:END(246) <-TCONTROL:DESTROY(2178) <-(b)TWBROWSE:TWBROWSE(650) <-TWBROWSE:DESTROY(0) <-TWINDOW:HANDLEEVENT(0) <-TWBROWSE:HANDLEEVENT(1733) <-_FWH(3341) <-DIALOGBOXINDIRECT(0) <-TDIALOG:ACTIVATE(286)
    ------------------------------------------------------------    
12/14/14 16:45:36: EXCESS RELEASE OF FONT MS Sans Serif[ hFont : 0] ( nCount : -1 )
     <-TFONT:END(246) <-TCONTROL:DESTROY(2178) <-(b)TWBROWSE:TWBROWSE(650) <-TWBROWSE:DESTROY(0) <-TWINDOW:HANDLEEVENT(0) <-TWBROWSE:HANDLEEVENT(1733) <-_FWH(3341) <-DIALOGBOXINDIRECT(0) <-TDIALOG:ACTIVATE(286)
    ------------------------------------------------------------    
12/14/14 16:45:38: EXCESS RELEASE OF FONT MS Sans Serif[ hFont : 0] ( nCount : -2 )
     <-TFONT:END(246) <-TCONTROL:DESTROY(2178) <-(b)TWBROWSE:TWBROWSE(650) <-TWBROWSE:DESTROY(0) <-TWINDOW:HANDLEEVENT(0) <-TWBROWSE:HANDLEEVENT(1733) <-_FWH(3341) <-DIALOGBOXINDIRECT(0) <-TDIALOG:ACTIVATE(286)
    ------------------------------------------------------------    
12/14/14 16:45:40: EXCESS RELEASE OF FONT MS Sans Serif[ hFont : 0] ( nCount : -3 )
     <-TFONT:END(246) <-MAIN(21)
    ------------------------------------------------------------   
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: EXCESS RELEASE OF FONT

Post by Verhoven »

El LISTBOX es el que elimina/modifica la variable oFont que se emplee para él.
Estoy empleando en el enlazado la libreria del TBBROSE de Hernan VERSIÓN 17.
Viendo el mensaje de error del log la línea a la que hace referencia con número 650 contiene lo siguiente:

Code: Select all

   METHOD Destroy() INLINE If( ::oTXT !=Nil, (::oTXT:End(), ::oTXT:= Nil),),;
                           Super:Destroy()
No se si puede ser que las últimas versiones de XHARBOUR o FWH no son compatibles con esa sitaxis.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: EXCESS RELEASE OF FONT

Post by Antonio Linares »

Paz,

Mira a ver en el código del Listbox de Hernán si en algún lado se hace:

::oFont = oFont

Todas las asignaciones de fonts ahora tienen que hacerse con el método SetFont() y de ahí podría ser que se esté destruyendo más de la cuenta, cuando el control finalmente se destruye.

Si no lo encuentras, copia el fuente aqui y lo revisamos :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: EXCESS RELEASE OF FONT

Post by Verhoven »

Arreglado Antonio.
Hemos eliminado de esa clase las dos líneas con ::oFont = oFont
y al final de los métodos New y Redefine hemos añadido la línea Self:SetFont(oFont)

Habrá que pensar en planificar algo de tiempo para pasar al xBrowse, pero siempre hay algo más urgente que hacer y se va quedando para atrás, pero será la solución definitiva.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: EXCESS RELEASE OF FONT

Post by Antonio Linares »

Me alegro de que se haya solucionado :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Patricio Avalos Aguirre
Posts: 1028
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile
Contact:

Re: EXCESS RELEASE OF FONT

Post by Patricio Avalos Aguirre »

Estimados

en la clase de wbrowse de hernan, la variable ofont siempre es objeto, o no
de lo contratio Self:SetFont abria que verificar?

if oFont <> NIL
oFont:SetFont(oFont)
endif
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: EXCESS RELEASE OF FONT

Post by Antonio Linares »

Patricio,

Si. Ahora hay que tener cuidado de no hacer nunca:

oObjeto:oFont = oFont

siempre hay que usar

oObjeto:SetFont( oFont )

Aunque mientras escribo esto, se me acaba de ocurrir que podriamos usar sobrecarga de operadores y hacer que = ó := para un objeto TFont llamase por defecto a SetFont()...
regards, saludos

Antonio Linares
www.fivetechsoft.com
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: EXCESS RELEASE OF FONT

Post by Verhoven »

Antonio,
No se si es necesario hacer algo parecido para los objetos oPen a lo que se hace con los oFont.
¿Me lo puedes confirmar?. Es que aunque menos EXCESS RELEASE OF FONT que antes esporádicamente sale alguno.
He revisado todo el código, y aunque me puedo haber dejado algo por detrás, no se me ocurre por donde buscar.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: EXCESS RELEASE OF FONT

Post by Antonio Linares »

Estas usando alguna clase de terceros en la que no se este asignando el font usando el método SetFont() ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: EXCESS RELEASE OF FONT

Post by Verhoven »

La única clase que uso fuera FWH y Barbour es el browse de Hernan.
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: EXCESS RELEASE OF FONT

Post by Verhoven »

Pero ya la he revisado y modificado para adaptarla también al setfont y a no hacer los oFont:end()
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: EXCESS RELEASE OF FONT

Post by Antonio Linares »

Y se mantiene el error ó ya se ha corregido ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: EXCESS RELEASE OF FONT

Post by Verhoven »

Se ha mantenido el error.
Pero como es más esporádico que antes tengo instalada la actualización de la aplicación en varios sitios a ver si pasados unos días (al menos una semana) de uso vuelve a producirse y comento el resultado.
Post Reply