Jump to content
Fivewin Brasil

Zero divisor: /


aokisantos

Recommended Posts

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.)

FWH25+XHARB 99.50+WS+SQLLIB+MYSQL

Msn: aokisantos@hotmail.com

Link to comment
Share on other sites

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.)

FWH25+XHARB 99.50+WS+SQLLIB+MYSQL

Msn: aokisantos@hotmail.com

Link to comment
Share on other sites

Olá,

Suponho que seja por causa de divisão por zero. Eu uso uma função para isto:


return iif( nVar2=0 .or. nVar1=0, 0, nVar1/nVar2 )

id=code>id=code>

E substituo nVar1/nVar2 por DiviZero( nVar1, nVar2 )

[]s,

Evandro G. de Paula

Curvelo - MG

evandro@skillnet.com.br (Escr. - na Cidade)

imortal@skillnet.com.br (Res. - na Roça)

FWH 2.6+PellesC+MyMake+xHarbour.org 0.99.5+SqlLib

I PREPARATÓRIO PARA O VI ENCONTRO FIVEWIN - JULHO/2008 - CURVELO - MG

Link to comment
Share on other sites

olá,

o clipper/xharbour não aceita q um número seja dividido por zero... você pode tratar isto de forma transparente para o sistema, sem ter que verificar todas as operações de divisão que a sua aplicação está fazendo... sugiro que implemente a sua própria rotina de tratamento de erros e

coloque este trecho nela:


#include "Error.ch"

IF objErro:genCode == EG_ZERODIV

RETURN(0)

ENDIF

id=code>id=code>

onde objErro é o objeto de erro passado pelo ErrorBlock...

é mais ou menos oq o Evandro sugeriu, porém como eu disse funciona de forma transparente, sem precisar mudar programa a programa....

um abraço

Yury Marcelino Al

Viman Sistemas

vimansca@vimansca.com.br

yury030575@yahoo.com.br (msn)

skype: yury.marcelino.al

Leme / SP

FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say

Editado por - yury on 19/01/2008 00:40:04

Link to comment
Share on other sites

olá,

declare a procedure ErrorSys() na função principal do seu sistema ou mesmo em um .prg isolado e compile junto...

passará a executar o errorsys() declarado e não mais o nativo...

aí de dentro dela vc chama a sua função de erros...


#include 'Error.ch'

Procedure ErrorSys()

ErrorBlock( { | o | Meus_Erros( o ) } )

return

Function Meus_Erros( o )

IF o:genCode == EG_ZERODIV

RETURN(0)

ELSEIF...

ELSEIF...

ENDIF

return

id=code>id=code>

um abraço

Yury Marcelino Al

Viman Sistemas

vimansca@vimansca.com.br

yury030575@yahoo.com.br (msn)

skype: yury.marcelino.al

Leme / SP

FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...