Page 1 of 1

Para Antonio Linares, salida abrupta ...

Posted: Sat Feb 02, 2008 10:46 pm
by Francisco Horta
Hola Antonio
Tengo un Punto de Venta recien instalado en unos equipos con XP y VISTA y los esta sacando bien seguido sin un patron de comportamiento igual hasta el momento, en el dialgo de la Venta, de pronto el sistema sin avisar en XP los saca y no genera error.log y en VISTA se bloquea y si genera error.log, lei en dias pasados un topico al problema que un colega tuvo con la clase DSAY "http://fivetechsoft.com/forums/viewtopic.php?t=9795"
yo uso FWH y Harbour, y las clases externas:
BTNGET, SSAY, TGRAPH, TSBUTTON, C5MENU, TWBROWSE Y VBOX, lo que resulta de todo es que en el topico del DSAY ahi le mencionas que corrija una linea de INVALIDATERECT y que con eso se solucionó, yo estuve revisando las clases y en el dialogo de la venta uso las clases externas BTNGET,TSBUTTON y VBOX, pero la SSAY por ahi usa el INVALIDATERECT en el metodo Default, pudiera estar por ahi el problema o sera otra cosa?, de todas las clases externas que uso unicamente en la SSAY encontre el InvalidateRect, te pongo un pedazo del error.log generado y parte de mi codigo. Acabo de quitar en el dialogo de venta el uso de SSAY, pero sigo enlazando la libreria al sistema, mientras voy a probar por ahi en lo que me pudieras ayudar.

ERROR.LOG
Application
===========
Path and name: E:\Pventa\Caja5.exe (32 bits)
Size: 2,547,712 bytes
Time from start: 0 hours 0 mins 18 secs
Error occurred at: 20/01/2008, 23:32:47
Error description: Error BASE/1066 Argument error: conditional
Args:
[ 1] = U

Stack Calls
===========
Called from: => TWINDOW:LVALID(0)
Called from: => TCONTROL:FWLOSTFOCUS(0)
Called from: => TCONTROL:HANDLEEVENT(0)
Called from: => TCONTROL:HANDLEEVENT(0)
Called from: C:ProyectosHarbourxPV2uenteswindow.prg => _FWH(3165)
Called from: => DIALOGBOX(0)
Called from: => TDIALOG:ACTIVATE(0)
Called from: C:ProyectosHarbourxPV2uentespv01.prg => PASSWORD(645)
Called from: C:ProyectosHarbourxPV2uentespv01.prg => (b)MAIN(229)
Called from: => TWINDOW:ACTIVATE(876)
Called from: C:ProyectosHarbourxPV2uentespv01.prg => MAIN(229)

MI CODIGO:
#define _DDE_CH
#define _VIDEO_CH
#define _TREE_CH
#define _ODBC_CH

#INCLUDE "FiveWin.ch"
#INCLUDE "Btnget.ch"
#INCLUDE "TsButton.ch"
#INCLUDE "Vbox.ch"
#INCLUDE "DtPicker.ch"
#INCLUDE "Splitter.ch"
#INCLUDE "dbcombo.ch"

MEMVAR oWnd, oVarSys, oVarUsu

FUNCTION PV2100(oItem,nBtn,oToolBar)

..............
DEFINE DIALOG oDlg NAME "PV2100" COLOR nRGB(0,64,128),nRGB(0,64,128)
.............

oDlg:bKeyDown := {|nK| if( ( nK == Asc( "A" ) .OR. nK == Asc( "a" ) ) .AND. GetKeyState( VK_CONTROL ), ;
( IF(lAuto[VAL(nCaja)],lAuto[VAL(nCaja)]:=.F.,lAuto[VAL(nCaja)]:=.T.),;
oMsgItem[4]:SetText("Venta Aut.: "+IF(lAuto[VAL(nCaja)],"S","N")),;
oMsgItem[4]:Refresh(), SndPlaySound("Click.Wav")), ), ;
if( ( nK == Asc( "T" ) .OR. nK == Asc( "t" ) ) .AND. GetKeyState( VK_CONTROL ), ;
( IF(lImpre[VAL(nCaja)],lImpre[VAL(nCaja)]:=.F.,lImpre[VAL(nCaja)]:=.T.),;
oMsgItem[8]:SetText("Imp.Ticket: "+IF(lImpre[VAL(nCaja)],"S","N")),;
oMsgItem[8]:Refresh(), SndPlaySound("Click.Wav")), ) }
*------

ACTIVATE DIALOG oDlg CENTERED ;
ON INIT ( Inicia(), Msg_Barra(oDlg,oMsg,oMsgItem,oFnt), ;
SetWindowPos( oDlg:hWnd, -1,0,0,0,0,3 ) ) ;
VALID ( IF(lSalir .OR. lCorteCaja,.T.,(lSalir:=Checa(@oBTmp))),IF(lSalir .OR. lCorteCaja,.T.,lSalir) )

Gracias.
Paco

Posted: Sun Feb 03, 2008 9:39 am
by Antonio Linares
Paco,

En el error.log el problema es que no estás devolviendo un valor lógico en un VALID:

Error description: Error BASE/1066 Argument error: conditional
Args:
[ 1] = U // posiblemente nil

Stack Calls
===========
Called from: => TWINDOW:LVALID(0)

Posted: Sun Feb 03, 2008 6:37 pm
by Francisco Horta
gracias antonio, revisare, para ver en cual valid es,, ups, pa detectarlo alguna idea? porque tengo muchos
salu2
Paco

Posted: Sun Feb 03, 2008 7:01 pm
by Antonio Linares
Paco,

Modifica el método lValid() de la clase TWindow de esta forma:

Code: Select all

METHOD lValid() CLASS TWindow

   local lResult := .T.

   if ::bValid != nil
      lResult = Eval( ::bValid )
      if ValType( lResult ) != "L"
         MsgAlert( "VALID no retorna valor lógico desde " + ProcName( 3 ) + " Línea: " + Str( ProcLine( 3 ) )
      endif 
   endif    

return lResult
No lo he probado, quizás tengas que usar 4 ó 5 en vez de 3.

Posted: Mon Feb 04, 2008 6:09 pm
by Francisco Horta
bien probaré te comento, imagino que el fallo viene por el valid que se hace a la window, pero si no es ahi se puede detectar en que objeto esta el fallo?
aqui dejo el error.log completo
Application
===========
Path and name: C:\Pventa2\valleverde\Caja5.exe (32 bits)
Size: 2,555,904 bytes
Time from start: 0 hours 0 mins 13 secs
Error occurred at: 03/02/2008, 00:36:22
Error description: Error BASE/1066 Argument error: conditional
Args:
[ 1] = U

Stack Calls
===========
Called from: => TWINDOW:LVALID(0)
Called from: => TCONTROL:FWLOSTFOCUS(0)
Called from: => TCONTROL:HANDLEEVENT(0)
Called from: => TCONTROL:HANDLEEVENT(0)
Called from: C:ProyectosHarbourxPV2uenteswindow.prg => _FWH(3165)
Called from: => SYSREFRESH(0)
Called from: => TCONTROL:KEYCHAR(0)
Called from: => TCONTROL:KEYCHAR(0)
Called from: => TCONTROL:HANDLEEVENT(0)
Called from: => TCONTROL:HANDLEEVENT(0)
Called from: => TCONTROL:HANDLEEVENT(0)
Called from: C:ProyectosHarbourxPV2uenteswindow.prg => _FWH(3165)
Called from: => DIALOGBOX(0)
Called from: => TDIALOG:ACTIVATE(0)
Called from: C:ProyectosHarbourxPV2uentespv01.prg => PASSWORD(648)
Called from: C:ProyectosHarbourxPV2uentespv01.prg => (b)MAIN(231)
Called from: => TWINDOW:ACTIVATE(876)
Called from: C:ProyectosHarbourxPV2uentespv01.prg => MAIN(231)

System
======
CPU type: Intel(R) Pentium(R) 4 CPU 2.26GHz 2266 Mhz
Hardware memory: 248 megs

Free System resources: 90 %
GDI resources: 90 %
User resources: 90 %

Compiler version: Harbour Alpha build 46.2 Intl. (Flex)
Windows version: 5.1, Build 2600 Service Pack 2

Windows total applications running: 13
1
2 Menú Inicio
3 CiceroUIWndFrame
4 TF_FloatingLangBar_WndTitle
5 Registro de Acceso
6 Sistema Punto de Venta
7 MCI command handling window
8 WOWExec
9 Connections Tray
10 Medidor de energía
11 MS_WebcheckMonitor
12 Hidden Main Window
13 Program Manager

Variables in use
================
Procedure Type Value
==========================
TWINDOW:LVALID
Local 1: O Class: TGET
Local 2: U
Local 3: U
Local 4: S
Local 5: N 0
TCONTROL:FWLOSTFOCUS
Param 1: N 459082
Local 1: O Class: TGET
Local 2: U
Local 3: U
TCONTROL:HANDLEEVENT
Param 1: N 2057
Param 2: N 459082
Param 3: N 0
Local 1: O Class: TGET
TCONTROL:HANDLEEVENT
Param 1: N 2057
Param 2: N 459082
Param 3: N 0
Local 1: O Class: TGET
_FWH
Param 1: N 0
Param 2: N 2057
Param 3: N 459082
Param 4: N 0
Param 5: N 9
Local 1: O Class: TGET
SYSREFRESH
TCONTROL:KEYCHAR
Param 1: N 13
Param 2: N 18612225
Local 1: O Class: TGET
Local 2: U
Local 3: U
Local 4: U
Local 5: U
TCONTROL:KEYCHAR
Param 1: N 13
Param 2: N 18612225
Local 1: O Class: TGET
Local 2: U
Local 3: U
Local 4: U
Local 5: U
Local 6: U
TCONTROL:HANDLEEVENT
Param 1: N 258
Param 2: N 13
Param 3: N 18612225
TCONTROL:HANDLEEVENT
Param 1: N 258
Param 2: N 13
Param 3: N 18612225
Local 1: O Class: TGET
TCONTROL:HANDLEEVENT
Param 1: N 258
Param 2: N 13
Param 3: N 18612225
Local 1: O Class: TGET
_FWH
Param 1: N 18612225
Param 2: N 258
Param 3: N 13
Param 4: N 18612225
Param 5: N 9
Local 1: O Class: TGET
DIALOGBOX
Param 1: N 4194304
Param 2: C "Acceso"
Param 3: N 1311060
Param 4: O Class: TDIALOG
TDIALOG:ACTIVATE
Param 1: U
Param 2: U
Param 3: U
Param 4: L .T.
Param 5: U
Param 6: L .T.
Param 7: B {|| ... }
Param 8: U
Param 9: U
Param 10: L .F.
Local 1: O Class: TDIALOG
Local 2: N 1311060
Local 3: U
Local 4: U
Local 5: S
Local 6: O Class: TDIALOG
PASSWORD
Param 1: O Class: TMDIFRAME
Param 2: O Class: TMSGITEM
Param 3: L .F.
Local 1: O Class: TDIALOG
Local 2: N 3
Local 3: C "Usuarios"
Local 4: L .F.
Local 5: L .F.
Local 6: C "ADMIN "
Local 7: O Class: TGET
Local 8: O Class: TGET
Local 9: C "Usuarios"
Local 10: C " "
Local 11: C "DBFCDX"
(b)MAIN
Param 1: O Class: TMDIFRAME
TWINDOW:ACTIVATE
Param 1: C "MAXIMIZED"
Param 2: U
Param 3: U
Param 4: U
Param 5: U
Param 6: U
Param 7: U
Param 8: B {|| ... }
Param 9: U
Param 10: U
Param 11: U
Param 12: U
Param 13: U
Param 14: U
Param 15: U
Param 16: U
Param 17: B {|| ... }
Param 18: U
Param 19: U
Local 1: O Class: TMDIFRAME
Local 2: U
Local 3: U
MAIN
Local 1: U
Local 2: O Class: TICON
Local 3: A Len: 4
Local 4: L .T.
Local 5: U
Local 6: N 11122277722

Linked RDDs
===========
DBF
DBFFPT
DBFCDX
DBFBLOB

DataBases in use
================

Classes in use:
===============
1 HBCLASS
2 HBOBJECT
3 TVARSYS
4 TVARUSU
5 TFONT
6 TWINDOW
7 TDIALOG
8 TBRUSH
9 TCONTROL
10 TSAY
11 TBITMAP
12 TTIMER
13 TICON
14 TMDIFRAME
15 TC5MENU
16 TMENUITEMC5
17 TMDICLIENT
18 TIMAGELIST
19 TREBAR
20 TPANEL
21 TTOOLBAR
22 TMSGBAR
23 TRECT
24 TMSGITEM
25 TIMAGE
26 TGET
27 TBTNGET
28 GET
29 TCLIPGET
30 TBUTTON
31 ERROR
32 TREG32

Memory Analysis
===============
345 Static variables

Dynamic memory consume:
Actual Value: 0 bytes
Highest Value: 0 bytes
gracias
paco

Posted: Mon Feb 04, 2008 6:24 pm
by Antonio Linares
Paco,

De tu error.log se ve que es en un GET:

Procedure Type Value
==========================
TWINDOW:LVALID
Local 1: O Class: TGET

Has probado la modificación del código del metodo lValid() que te he comentado ?

Posted: Mon Feb 04, 2008 7:12 pm
by Francisco Horta
ya hice la modificacion en la clase window como me comentas, lo instalo con el cliente hoy mismo y a esperar a que brinque la rana,,,
Muy agradecido,
Paco