como liberar recursos segun CheckRes ?

como liberar recursos segun CheckRes ?

Postby russimicro » Thu Nov 14, 2024 2:11 am

Buena noche..

Tengo este reporte de checkRes.. y no he podido liberarlos

Jonsson Russi



11/13/2024 21:02:19: e:\ZERUS\zeruswin.exe -- FONT,-1945497203,TMETROPANEL:NEW(121)->MAKEMETROPANEL(9525)->VALIDAUSER_X(9450)->VALIDAUSER(9429)->ZERUSMAIN(1219)->MAIN(17)
11/13/2024 21:02:19: e:\ZERUS\zeruswin.exe -- FONT,-100004238,TMETROPANEL:NEW(123)->MAKEMETROPANEL(9525)->VALIDAUSER_X(9450)->VALIDAUSER(9429)->ZERUSMAIN(1219)->MAIN(17)
11/13/2024 21:02:19: e:\ZERUS\zeruswin.exe -- PAL,1812467870,(b)TWINDOW:TWINDOW(603)->TMETROBTN:READIMAGE(0)->TMETROBTN:LOADBITMAPS(724)->TBTNBMP:NEW(468)->TMETROBTN:NEW(609)->TMETROPANEL:ADDBUTTON(455)->MAKEMETROPANEL(9586)->VALIDAUSER_X(9450)->VALIDAUSER(9429)->ZERUSMAIN(1219)->MAIN(17)
Code: Select all  Expand view

function ValidaUSer_X(xWnd,vVecDat,vVecCom,cCodEqu,cEmpAct,cNomAct)


   LOCAL oBar, oMetro, oBrush

   PUBLIC lIngZer := .F. , oWndMet

   M->cIniMet  := "S"

   DEFINE WINDOW oWndMet TITLE "" STYLE nOr( WS_POPUP,WS_MAXIMIZE ) //    WS_MAXIMIZE

   oMetro   := MakeMetroPanel( oWndMet,@vVecDat,vVecCom,cCodEqu,cEmpAct,cNomAct )

   IF FILE("imagenes\windows10.bmp")
      DEFINE BRUSH oBrush FILE "imagenes\windows10.bmp"  RESIZE
      oMetro:SetBrush( oBrush )
      RELEASE BRUSH oBrush
   ENDIF

   ACTIVATE WINDOW oWndMet MAXIMIZED  ON INIT oMetro:Show()

   try

      oMetro:DESTROY()
      oWndMet:DESTROY()

   catch

   end


RETURN lIngZer

 


//****************************************************************


11/13/2024 21:02:19: e:\ZERUS\zeruswin.exe -- FONT,319425528,TWINDOW:GETFONT(3174)->TWINDOW:NEW(984)->PRINCIPAL_METRO(7276)->PRINCIPAL(1355)->ZERUSMAIN(4533)->MAIN(17)
11/13/2024 21:02:19: e:\ZERUS\zeruswin.exe -- FONT,17437078,TMETROPANEL:NEW(118)->MAKEMETROPANELPRINCIPAL(7616)->PRINCIPAL_METRO(7278)->PRINCIPAL(1355)->ZERUSMAIN(4533)->MAIN(17)
11/13/2024 21:02:19: e:\ZERUS\zeruswin.exe -- PAL,-1207432855,(b)TWINDOW:TWINDOW(603)->TMETROBTN:READIMAGE(0)->TMETROBTN:LOADBITMAPS(724)->TBTNBMP:NEW(468)->TMETROBTN:NEW(609)->TMETROPANEL:ADDBUTTON(455)->MAKEMETROPANELPRINCIPAL(7724)->PRINCIPAL_METRO(7278)->PRINCIPAL(1355)->ZERUSMAIN(4533)->MAIN(17)

Code: Select all  Expand view

FUNCTION PRINCIPAL_METRO()

LOCAL oBrush,hborland,oCursor,oCursorPen,oFont, oFon
LOCAL cDirAct := DISKNAME()+":"+XDIRNAME()+"\"+cCodCia
LOCAL oTimer , oSprite  , oIco,oPopup3, oPopup2
LOCAL cTipCon := "
", cImaFon, SW := 0 ,oMetPri
LOCAL nDurTim := 3000 ,oErr  // cada dos minutos
LOCAL cPatLoc := "
C:\TEMP"

PRIVATE lActFun := .F., cNomFon := "
imagenes\fondonegro1.bmp"  // 7 ok

MEMVAR oBar, Omenu
PUBLIC oImageList, oToolBar, oBa1r, oBar, Omenu

cambiaTemp(@cPatLoc)

   IF M->lProEje
      MYMEN("
Error. El programa ya esta en ejecuci¢n")
      RETURN NIL
   ENDIF


   M->lProEje := .T.


   Ctrl_F7 := {"
BorraMoviConcepto(cPatSis)"}

   SetResDebug( .T. )

   IF FILE("
.\IMAGENES\zeruswin.ico") // PONGA EN EL DIRECTORIO DEL PROGRAMA
      DEFINE ICON oIco  FILENAME "
.\IMAGENES\zeruswin.ico"
   ELSE

   ENDIF
   M->cTitVenPri := HB_OEMTOANSI("
Russoft ERP. Sistema de Gesti¢n Empresarial " +"(Versi¢n : "+m->cFecVerZer+")"+ " | "+ cCiaAct +" - "+ cCiaNom )

   DEFINE WINDOW oWnd FROM 0, 0 TO 46, 128 ;
                 TITLE M->cTitVenPri            ;
                 ICON oIco                      ;
                 MENU  MenuPrincipal(oWnd)

                 oMetPri := MakeMetroPanelPrincipal( oWnd,oBrush )
                 IF oMetPri == NIL
                    RETURN NIL
                 ENDIF
                 m->oMetWin := oMetPri

   ACTIVATE WINDOW oWnd MAXIMIZED ON INIT ( oMetPri:Show(),;
                                            oTimer := XTimers(),;
                                            LINEAESTADOFW(oWnd) )


   IF FILE( "
checkres.txt" )
      CopyFile("
checkres.txt","x_checkres.txt",0)
      FErase( "
checkres.txt" )
   ENDIF


   CREASALIRBASCULAJAVA()

   M->lProEje := .F.

   IF oBrush <> NIL
      DeleteObject( oBrush )
   ENDIF

   DeleteObject( oMetPri )

     oFon3:end()

     while oFon2:nCount > 0
           oFon2:End()
     end

     if oMenMet <> nil
        oMenMet:END()
     endif

     if oMe1Met <> nil
        oMe1Met:END()
     endif
     if oMe2Met <> nil
        oMe2Met:END()
     endif

     if oMe3Met <> nil
        oMe3Met:END()
     endif

     if oMe4Met <> nil
        oMe4Met:END()
     endif

     if oMe5Met <> nil
        oMe5Met:END()
     endif

      if oMe6Met <> nil
        oMe6Met:END()
     endif

     if oMe7Met <> nil
        oMe7Met:END()
     endif

     if oMe8Met <> nil
        oMe8Met:END()
     endif

     if oMe9Met <> nil
        oMe9Met:END()
     endif

     if oMe10Met <> nil
        oMe10Met:END()
     endif


     if oMe11Met <> nil
        oMe11Met:END()
     endif
     if oMe12Met <> nil
        oMe12Met:END()
     endif

     if oMe13Met <> nil
        oMe13Met:END()
     endif

     if oMe14Met <> nil
        oMe14Met:END()
     endif

     if oMe15Met <> nil
        oMe15Met:END()
     endif

     if oMe16Met <> nil
        oMe16Met:END()
     endif

    //oMe17Met:END()
     //oMe18Met:END()
     //oMe19Met:END()
     //oMe20Met:END()
     IF oMe21Met <> NIL
        oMe21Met:END()
     ENDIF
     IF oMe22Met <> NIL
        oMe22Met:END()
     ENDIF

          M->oFonAc0:END()
          M->oFonAct:END()
          M->oFonAc1:END()
          M->oFonAc2:END()
          M->oFonAc3:END()
          M->oFonAc4:END()
          M->oFonAc5:END()
          M->oFonAc6:END()
          M->oFonAc7:END()
          M->oFonAc8:END()
          M->oFonAc9:END()
          M->oFonAc10:END()
          M->oFonAc11:END()
          M->oFonAc12:END()
          M->oFonAc13:END()
          M->oFonAc24:END()

   SET PRINTER TO
   FCLOSE(M->cArcImp)

   IF M->lFW_Gtw
      M->oWndFW:End()
   ENDIF

   IF M->lXhbCom
      Z_SR_END()
   ENDIF

   IF M->hAds2 <> NIL
      AdsDisconnect( M->hAds2 )
   ENDIF

   IF M->hAds1 <> NIL
      AdsDisconnect( M->hAds1 )
   ENDIF

   oWnd:END()

   DbCommitAll()
   DbUnLockAll()
   DbCloseAll()

   FreeResources()
   RELEASE ALL
   SysRefresh()

   HB_GCALL( .T. )
   CLEAR MEMORY

   SET KEY VK_ESCAPE TO

   M->lProEje := .F.

  /*
   fBorraArchivos(cPatLoc+"
\","*.TMP")
   fBorraArchivos(cPatLoc+"
\","*.TEM")
   fBorraArchivos(cPatLoc+"
\","*.TMD")
   fBorraArchivos(cPatLoc+"
\","*.CDX")
  */


   CheckRes()

   PostQuitMessage( 0 )
   __QUIT()


RETURN NIL // ( oWnd )

russimicro
 
Posts: 260
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: como liberar recursos segun CheckRes ?

Postby Antonio Linares » Thu Nov 14, 2024 6:21 am

Son dos fonts los que tienes que liberar, pero si eso es todo lo que te aparece, la aplicación los liberará al terminar su ejecución

No es preocupante :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42098
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: como liberar recursos segun CheckRes ?

Postby russimicro » Thu Nov 14, 2024 12:53 pm

Buen día...

Estoy buscando la causa de esta situación:

En el equipo de desarrollo, después de varias ejecuciones por compilaciones seguidas ... el sistema se hace un tanto lento para dibujar las pantallas fivewin, se nota un parpadeo---
antes esto verifique el checkres.. a ver si ayuda... pero al parecer no es el motivo los FONTS, reportados...

lo mas notable es el pintado de los botones : he quitado las imágenes pero sigue igual.. son como 30 botones como los siguientes :
Code: Select all  Expand view

@ 561, 400  BTNBMP oBotF08 PROMPT  "F8 Notas Pag"  OF oCapInv ;
                 TOOLTIP HB_OEMTOANSI("Registra observaciones del documento a imprimir") ;
                 2007 TOP ;
                 SIZE 82,42 ;
                 ACTION ( ManMenFac(),ValidaFocoArticulo(cCodigoTar,oGetArt) ) ;
                 PIXEL



          @ 561, 484 BTNBMP oBotF11 PROMPT  HB_OEMTOANSI("F11 Productos")  OF oCapInv ;
                 TOOLTIP HB_OEMTOANSI("Mantenimiento de productos") ;
                 2007 TOP ;
                 PIXEL SIZE 83,42 ;
                 ACTION ( MantenimientoReferencias( oCapInv,oGetArt,@cCodigoTar,oNomArt, NIL,cManRcs ),;
                          ValidaFocoArticulo(cCodigoTar,oGetArt) )

          @ 561, 569  BTNBMP oBotF12  PROMPT  HB_OEMTOANSI("F12 Otros") OF oCapInv ;
                 TOOLTIP HB_OEMTOANSI("Otros procesos de inventarios") ;
                 2007 TOP ;
                 SIZE 85,42 ;
                 ACTION  ( otrosProcesosInventarios(oCapInv,cCodCon,;
                                                    oGetArt,oBrwConFw2,oPreArt,M->oCanArt,0, oPreVen,;
                                                    @cPreVen, oTipDes, @cTipDes, ooDesArt,@nPlaFac,oPlaFac,;
                                                    lAnexar,cCodCli), ValidaFocoArticulo(cCodigoTar,oGetArt), oBrwConFw2:Refresh() ) ;
                                                    PIXEL

 

quedo atento a otra sugerencia-.

Gracias
russimicro
 
Posts: 260
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: como liberar recursos segun CheckRes ?

Postby karinha » Thu Nov 14, 2024 1:55 pm

Code: Select all  Expand view

function ValidaUSer_X(xWnd,vVecDat,vVecCom,cCodEqu,cEmpAct,cNomAct)

   LOCAL oBar, oMetro, oBrush

   PUBLIC lIngZer := .F. , oWndMet

   IF FILE(".\imagenes\windows10.bmp")

      DEFINE BRUSH oBrush FILE ".\imagenes\windows10.bmp" RESIZE

   ELSE

      DEFINE BRUSH oBrush FILE ".\imagenes\windows11.bmp" RESIZE

   ENDIF

   M->cIniMet := "S"

   DEFINE WINDOW oWndMet BRUSH oBrush STYLE nOr( WS_POPUP, WS_MAXIMIZE ) ;
      TITLE ""

   oMetro := MakeMetroPanel( oWndMet,@vVecDat,vVecCom,cCodEqu,cEmpAct,cNomAct )

   ACTIVATE WINDOW oWndMet MAXIMIZED ON INIT( oMetro:Show() )

   RELEASE BRUSH oBrush

   oMetro:DESTROY()
   oWndMet:DESTROY()

RETURN( lIngZer )

// FIN / END
 

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7822
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: como liberar recursos segun CheckRes ?

Postby karinha » Thu Nov 14, 2024 2:32 pm

Code: Select all  Expand view

FUNCTION PRINCIPAL_METRO()

   LOCAL oBrush, hborland, oCursor, oCursorPen, oFont, oFon
   LOCAL cDirAct := DiskName() + ":" + XDIRNAME() + "\" + cCodCia
   LOCAL oTimer, oSprite, oIco, oPopup3, oPopup2
   LOCAL cTipCon := "
", cImaFon, SW := 0, oMetPri
   LOCAL nDurTim := 3000, oErr  // cada dos minutos
   LOCAL cPatLoc := "
C:\TEMP"

   MEMVAR oBar, oMenu

   PRIVATE lActFun := .F., cNomFon := "
imagenes\fondonegro1.bmp"  // 7 ok

   PUBLIC oImageList, oToolBar, oBa1r, oBar, Omenu

   cambiaTemp( @cPatLoc ) // ?? Que haces esto? hay Looping?

   IF M->lProEje  // UNA NUEVA WINDOW? ES ESTO?

      MYMEN( "
Error. El programa ya esta en ejecuci¢n" )

      RETURN NIL

   ENDIF

   M->lProEje := .T.

   Ctrl_F7 := { "
BorraMoviConcepto(cPatSis)" } // ?? PARA?

   SetResDebug( .T. )

   IF File( "
.\IMAGENES\zeruswin.ico" ) // PONGA EN EL DIRECTORIO DEL PROGRAMA

      DEFINE ICON oIco  FILENAME "
.\IMAGENES\zeruswin.ico"

   ELSE

      DEFINE ICON oIco  FILENAME "
.\IMAGENES\zeruswin2.ico"

   ENDIF

   M->cTitVenPri := hb_OEMToANSI( "
Russoft ERP. Sistema de Gesti¢n Empresarial " + ;
                                  "
(Versi¢n : " + m->cFecVerZer + ")" + " | "    + ;
                                   cCiaAct + "
- " + cCiaNom )

   DEFINE WINDOW oWnd FROM 0, 0 TO 46, 128 TITLE M->cTitVenPri               ;
      MENU  MenuPrincipal( oWnd ) ICON oIco

   oMetPri := MakeMetroPanelPrincipal( oWnd, oBrush )

   IF oMetPri == NIL
      RETURN NIL         // ???
   ENDIF

   m->oMetWin := oMetPri

   ACTIVATE WINDOW oWnd MAXIMIZED ON INIT( oMetPri:Show(), ;
      oTimer := XTimers(), LINEAESTADOFW( oWnd ) )

   // LINEAESTADOFW( oWnd ) QUE HACES ESTO? HAY LOOPING?

   IF File( "
checkres.txt" )
      CopyFile( "
checkres.txt", "x_checkres.txt", 0 )
      FErase( "
checkres.txt" )
   ENDIF

   CREASALIRBASCULAJAVA()  // ??? HAY LOOPING? QUE HACES ESTO? JAVA?

   M->lProEje := .F.

   IF oBrush <> NIL
      DeleteObject( oBrush ) // AQUI NO, EN SALIDA DEL PROGRAMA ES MEJOR.
   ENDIF

   DeleteObject( oMetPri )  // ???

   oFon3:end() // ?? Es PUBLIC? Se si, evite. Use LOCAL

   WHILE( oFon2:nCount > 0 )

      SYSREFRESH()

      oFon2:End()  // QUE ES ESTO, POR JESUS?

   ENDDO

   // NO COMPRENDO?
   IF oMenMet <> nil
      oMenMet:END()
   ENDIF

   IF oMe1Met <> nil
      oMe1Met:END()
   ENDIF
   IF oMe2Met <> nil
      oMe2Met:END()
   ENDIF

   IF oMe3Met <> nil
      oMe3Met:END()
   ENDIF

   IF oMe4Met <> nil
      oMe4Met:END()
   ENDIF

   IF oMe5Met <> nil
      oMe5Met:END()
   ENDIF

   IF oMe6Met <> nil
      oMe6Met:END()
   ENDIF

   IF oMe7Met <> nil
      oMe7Met:END()
   ENDIF

   IF oMe8Met <> nil
      oMe8Met:END()
   ENDIF

   IF oMe9Met <> nil
      oMe9Met:END()
   ENDIF

   IF oMe10Met <> nil
      oMe10Met:END()
   ENDIF

   IF oMe11Met <> nil
      oMe11Met:END()
   ENDIF
   IF oMe12Met <> nil
      oMe12Met:END()
   ENDIF

   IF oMe13Met <> nil
      oMe13Met:END()
   ENDIF

   IF oMe14Met <> nil
      oMe14Met:END()
   ENDIF

   IF oMe15Met <> nil
      oMe15Met:END()
   ENDIF

   IF oMe16Met <> nil
      oMe16Met:END()
   ENDIF

   // oMe17Met:END()
   // oMe18Met:END()
   // oMe19Met:END()
   // oMe20Met:END()
   IF oMe21Met <> NIL
      oMe21Met:END()
   ENDIF
   IF oMe22Met <> NIL
      oMe22Met:END()
   ENDIF

   // NO COMPRENDO? ES PUBLIC? EVITE. USE LOCAL
   M->oFonAc0:END()
   M->oFonAct:END()
   M->oFonAc1:END()
   M->oFonAc2:END()
   M->oFonAc3:END()
   M->oFonAc4:END()
   M->oFonAc5:END()
   M->oFonAc6:END()
   M->oFonAc7:END()
   M->oFonAc8:END()
   M->oFonAc9:END()
   M->oFonAc10:END()
   M->oFonAc11:END()
   M->oFonAc12:END()
   M->oFonAc13:END()
   M->oFonAc24:END()

   // SET PRINTER TO  -> NO ES MODO CONSOLA...

   FClose( M->cArcImp )

   IF M->lFW_Gtw
      M->oWndFW:End()
   ENDIF

   IF M->lXhbCom
      Z_SR_END()
   ENDIF

   IF M->hAds2 <> NIL
      AdsDisconnect( M->hAds2 )
   ENDIF

   IF M->hAds1 <> NIL
      AdsDisconnect( M->hAds1 )
   ENDIF

   oWnd:END()

   dbCommitAll()
   dbUnlockAll()
   dbCloseAll()

   FreeResources()
   RELEASE ALL
   SysRefresh()

   hb_gcAll( .T. )

   CLEAR MEMORY

   SET KEY VK_ESCAPE TO

   M->lProEje := .F.

   /*
   fBorraArchivos(cPatLoc+"
\","*.TMP")
   fBorraArchivos(cPatLoc+"
\","*.TEM")
   fBorraArchivos(cPatLoc+"
\","*.TMD")
   fBorraArchivos(cPatLoc+"
\","*.CDX")
   */

   CheckRes()

   PostQuitMessage( 0 )

   __Quit()

RETURN NIL

// FIN / END


Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7822
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: como liberar recursos segun CheckRes ?

Postby russimicro » Thu Nov 14, 2024 4:50 pm

11/14/2024 11:45:36: e:\ZERUS\zeruswin.exe -- FONT,1594496986,TMETROPANEL:NEW(121)->MAKEMETROPANEL(9510)->VALIDAUSER_X(9448)->VALIDAUSER(9388)->ZERUSMAIN(1223)->MAIN(17)

11/14/2024 11:45:36: e:\ZERUS\zeruswin.exe -- FONT,-1375068917,TMETROPANEL:NEW(123)->MAKEMETROPANEL(9510)->VALIDAUSER_X(9448)->VALIDAUSER(9388)->ZERUSMAIN(1223)->MAIN(17)


//***************************************************
Code: Select all  Expand view

FUNCTION ValidaUSer_X(xWnd,vVecDat,vVecCom,cCodEqu,cEmpAct,cNomAct)


   LOCAL oBar, oMetro, oBrush

   PUBLIC lIngZer := .F. , oWndMet

   M->cIniMet  := "S"

   IF FILE("imagenes\windows10.bmp")
      DEFINE BRUSH oBrush FILE "imagenes\windows10.bmp" RESIZE
   ENDIF

   DEFINE WINDOW oWndMet  STYLE nOr( WS_POPUP,WS_MAXIMIZE ) TITLE "" //    WS_MAXIMIZE

   oMetro   := MakeMetroPanel( oWndMet,@vVecDat,vVecCom,cCodEqu,cEmpAct,cNomAct ) // linea 9448
   oMetro:SetBrush( oBrush )

   ACTIVATE WINDOW oWndMet MAXIMIZED  ON INIT oMetro:Show()

   RELEASE BRUSH oBrush

   oMetro:DESTROY()
   oWndMet:DESTROY()


RETURN lIngZer

//**************************************************************


METHOD New( oWnd, cTitle, nClrText, nClrPane, bLClicked, nBtnSize, ;
            nClrThumb, nClrScroll ) CLASS TMetroPanel

   DEFAULT cTitle := "Start", nClrText := CLR_WHITE, nClrPane := CLR_GREEN

   DEFAULT ::nBtnSize      := IfNil( nBtnSize, 132 )
   DEFAULT ::nMetroRows    := Int( GetSysMetrics( 1 ) / ( ::nBtnSize + BTN_GAP ) ) - 1
   DEFAULT ::nMetroTop     := ::nBtnSize
   DEFAULT ::nMetroMargin  := ::nBtnSize

   ::Super:New( 0, 0, GetSysMetrics( 1 ) , GetSysMetrics( 0 ), oWnd )

   ::cTitle     = cTitle
   ::nRow       =   0
   ::nCol       =   0
   ::nClrThumb  = nClrThumb
   ::nClrScroll = nClrScroll
   ::hPen       = CreatePen( PS_SOLID, 2, CLR_BLACK )

   DEFAULT ::nClrScroll := RGB( 108, 110, 190 ), ;
           ::nClrThumb  := RGB( 148, 150, 230 )

   DEFINE FONT ::oFont  NAME "Segoe UI Light" SIZE 0, -18 BOLD
   DEFINE FONT ::oFontB NAME "Segoe UI Light" SIZE 0, -14 BOLD  // LINEA 121  // ESTE ES EL QUE REPORTA EL CHECKREST !!!

 
russimicro
 
Posts: 260
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: como liberar recursos segun CheckRes ?

Postby Antonio Linares » Thu Nov 14, 2024 5:46 pm

METHOD End() INLINE ::oWnd:End(), ::oFont:End(), ::oFontB:End(), DeleteObject( ::hBitmap )

Tienes que llamar a oMetro:End() antes de terminar
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42098
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 35 guests