Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
[Solucionado] Mensaje Warning: Circular References Detected En Mi Clase De ...
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje [Solucionado] Mensaje Warning: Circular References Detected En Mi Clase De Coneccion De Base Datos 
 
Quería consultar sobre este mensaje, el cual me arroja el compilador justo cuando cierro mi aplicación me aparece este mensaje en mi clase CDB. Estuve averiguando por Internet algunos dicen que es un problema de gambas actualmente estoy usando la versión 2.99.1. Adjunto el mensaje y mi código de esta clase.

Mensaje :

gbx3: warning: circular references detected:
gbx3:     1 CDB
gbx3: warning: 19 allocation(s) non freed.

Codigo :


Inherits Connection

Private $hRes As Result

Public Procedure connect_on() As Connection

    Try Me.Close
    Try Me.Open
    If Error Then
          Message.Error(Subst(MMesgTitle.MERR_001, DConv$(Error.Text)) & "\n KRC finalizará ahora.")
          Quit
    End If

End

Public Procedure connect_off() As Connection

    Try Me.Close()
    If Error Then Message.Error(MMesgTitle.MERR_011)

End

Public Function statement(Optional sQuery As String, Optional sMode_stat As String, Optional sTable As String, Optional sField As String, Optional sParam As String) As Result

    If Not sMode_stat Then sMode_stat = "QUE"

    Select Case sMode_stat
      Case "QUE"
          conection_query(sQuery)
      Case "INS"
          conection_insert(sTable, sField, sParam)
      Case "DEL"
          conection_delete(sTable, sField)
    End Select

    Try Return $hRes

End

Public Function unique_field(sTable As String, sParam As String) As Result

    If sTable And sParam Then  $hRes = Me.Find(sTable, sParam)
    Return $hRes

End

Public Function load_combobox(cmb As ComboBox, sQuery As String, sField_1 As String, Optional sField_2 As String)

    cmb.Tag = New Variant[]
    If Not sQuery Or Not cmb Or Not sField_1 Then Message.Error(MMesgTitle.MERR_006)
    $hRes = Me.Exec(sQuery)
    cmb.Add("", 0)
    cmb.Tag.Add("")
    Do While $hRes.Available
          cmb.Add($hRes[sField_1])
          cmb.Tag.Add($hRes[sField_2])
          $hRes.MoveNext
    Loop

End

Public Function load_listbox(lbx As ListBox, sQuery As String, Optional sParam1 As String, Optional sParam2 As String)

    If Not sQuery Then
           Message.Error(MMesgTitle.MERR_006)
    Endif
    $hRes = Me.Exec(sQuery)
    Do While $hRes.Available
          lbx.Add($hRes[sParam1], $hRes[sParam2])
          $hRes.MoveNext()
    Loop

End

Private Procedure conection_query(sQuery As String) As Result

  If Not sQuery Then
      Message.Error(MMesgTitle.MERR_006)
      Return $hRes
  Endif
  $hRes = Me.Exec(sQuery)
Catch
  Me.connect_on()
  Try $hRes = Me.Exec(sQuery)
  check_error()

End

Private Procedure conection_insert(sTable As String, Optional sField As String, sParam As String) As Result
  Dim sQuery_ins As String

  If Not sTable Or Not sParam Then
      Message.Error(MMesgTitle.MERR_006)
      Return $hRes
  Endif
  If Not IsNull(sField) Then
         sQuery_ins = Subst$("INSERT (&1) INTO &2 VALUES(&3)", sField, sTable, sParam)
  Else
         sQuery_ins = Subst$("INSERT INTO &1 VALUES(&2)", sTable, sParam)
  Endif
  $hRes = Me.Exec(sQuery_ins)
  If $hRes.Count < 0 Then Message.Error(MMesgTitle.MERR_002)

Try
  Message.Info(MMesgTitle.MINF_001, "Aceptar")
Catch
  Me.connect_on()
  Try $hRes = Me.Exec(sQuery_ins)
  check_error()

End

Private Procedure conection_delete(sTable As String, sField As String) As Result

  Me.Delete(sTable, sField)
Catch
  Me.connect_on()
  Try Me.Delete(sTable, sField)
  check_error()

End

Private Function check_error() As Result

  If Error Then
      Message.Error(Subst(MMesgTitle.MERR_005, Error.Text))
      Return $hres
  Endif

End

 

 



 
última edición por gara_pm el Lunes, 26 Diciembre 2011, 23:22; editado 1 vez 
gara_pm - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Mensaje Warning: Circular References Detected En Mi Clase De Coneccion De Base Datos 
 
Un mensaje de error indicando referencias circulares te señala que hay un error lógico en tu código (técnicamente sería posible que un error de este tipo se produzca en el código de gambas, pero en la práctica es casi imposible que a Benoit se le escape algo así).

El error se produce porque gambas no puede liberar la memoria ocupada por dos objetos porque ellos se referencian en forma mutua (gambas elimina un objeto de la memoria cuando ya no queda ninguna variable de referencia apuntando a tal objeto).

En tu código es probable que el problema provenga de que guardas un objeto Result en la propiedad Tag de un Combo. Así que deberías tener especial cuidado de eliminar la referencia al objeto Result de a propiedad Tag del combo, cuando el objeto Result ya no sea necesario.

Pero no te lo puedo asegurar porque en necesario revisar también el código que interactúa con los objetos CDB, así que tal vez el problema esté en otro lugar del código.

Happy debugging !!!
 




===================
Cómo programar con Gambas

Speed Books: informática libre.
 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Mensaje Warning: Circular References Detected En Mi Clase De Coneccion De Base Datos 
 
Gracias Fabian por responder mi consulta, con respecto a lo mencionado el problema podria generarse en el result del tag como tenia problema con los valores index de este combobox decidi usar esa opción, en todo caso cuando llegue a mi casa subire mi codigo y aprovechare de revisar.  
 



 
gara_pm - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Mensaje Warning: Circular References Detected En Mi Clase De Coneccion De Base Datos 
 
Fabian adjunto el código fuente del proyecto yo tratare de atrapar el warning, de antemano gracias por la ayuda.

proyecto krc
 



 
gara_pm - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: [Solucionado] Mensaje Warning: Circular References Detected En Mi Clase De Coneccion De Base Datos 
 
Solucione el el problema del warning y fue exactamente lo que fabian expuso en un comentario era que no limpiaba una variable de resultado al termina la aplicación, por lo cual  agregue una linea en el método connect_off() el cual cierra la conexión al base de datos.

$hres = null
 


PD: Gracias por la ayuda.
 



 
gara_pm - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Editar Base De Datos Gambas 2.19 [Solucion... Erik Bases de Datos 16 Miercoles, 12 Enero 2011, 00:13 Ver último mensaje
Erik
No hay nuevos mensajes Como Puedo Modificar Datos De La Base De D... metalgearxd General 2 Viernes, 01 Marzo 2013, 13:40 Ver último mensaje
metalgearxd
No hay nuevos mensajes Gbx3: Warning: Circular References Detected: Sebas General 6 Viernes, 12 Abril 2013, 06:27 Ver último mensaje
Sebas
No hay nuevos mensajes Crear Base De Datos SQL Desde Conexiones E... SafeMango Bases de Datos 9 Viernes, 30 Diciembre 2016, 01:57 Ver último mensaje
SafeMango
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron