Page 1 of 1

Zero divisor: /

Posted: Fri Jan 18, 2008 6:15 pm
by FWHISHOW
Gente acontece de vez enquando este erro: Zero divisor: /

O problema é que sistema aborta sem gerar o error.log.

Alguem sabe como contornar? Pois não sei como resolver e o sistema não chega nem a gerar o error.log.

Para descobrir este erro fiz um controle de erro, assim:

bOldError := ErrorBlock( {|e| BReak(E) })
errorblock({ |oErro, a, b, c| Erro_LiberaMesa(oErro), eval(bOldError, oErro, a, b, c)})

/******************************************************************************/
function Erro_LiberaMesa(oerro)
/*
*/
local nArq,nFWarq:="Erro"+SUBSTR(TIME(),4,2)+SUBSTR(TIME(),7,2)+".txt",cstack:=""

cstack:="FIVEWIN ERROR:"+CRLF
cstack+=dtoc(date())+" "+time()+" error: "+oErro:description+": "+oErro:Operation+CRLF
cstack+=" Line: "+Str( ProcLine(), 4 )+" Arquivo: "+procfile()+ CRLF
cstack+=" Line: "+Str( ProcLine(1), 4 )+ CRLF
cstack+=" Line: "+Str( ProcLine(2), 4 )+ CRLF
cstack+=" Line: "+Str( ProcLine(3), 4 )+ CRLF
MemoWrit(Curdrive()+':\'+curdir()+'\'+nFWarq,cstack)

return(.t.)

Posted: Sat Jan 19, 2008 3:02 am
by Armando
FWHISHOW:

Creo que el problema esta en alguna división, debes probar que el divisor no sea CERO, por ejemplo

nDivdndo := 1000.00
nDivsr := 0

nResult := nDivdndo / nDivsr // Esto te va a provocar error

Prueba así

IF nDivsr <> 0.00
nResult := nDivdndo / nDivsr
ELSE
nResult := 0.00
ENDIF

Saludos

Posted: Sat Jan 19, 2008 3:43 am
by Willi Quintana
Hola, prueba asi

nValor1 := 7
nDiviso := 0

nResult := nValor1 / IF(nDiviso =0,1, nDivisor)

....


Salu2

Posted: Sat Jan 19, 2008 10:20 am
by FWHISHOW
GRACIAS A TODOS!

Posted: Tue Jan 22, 2008 10:32 pm
by carlos vargas

Code: Select all

nDivdndo := 1000.00
nDivsr     := 0

TRY
     nResult := nDivdndo / nDivsr 
CATCH oErr
     nResult := 0
     ?"Error en el calculo de la division"
END
?nResult
Salu2
carlos vargas