Página 1 de 1

Duvida em Formula

Enviado: 17 Mar 2017 14:47
por juniorcamilo
Amigos..

o que pode ser:
compilado sem a função:

Código: Selecionar todos

Procedure ErrorSys()
    ErrorBlock( {|e| DefError(e)} )
return .t.
function DefError(e)


return .t.

Código: Selecionar todos

Function Main()  
  Local nPerDes  := 0.00
  Local nTotal   := 0.00
  Local nAcre    := 0.00
  Local nDesc    := 0.00
  Local nTot1    := (nTotal + (nTotal * ( nAcre/100 )))
  nPerdes  := nTot1 - nDesc
  nPerdes  := nPerdes/nTot1
  nPerdes  := 1 - nPerdes
  nPerdes  := nPerdes * 100
return .t.
O resultado de nPerdes := 0

Mas c compilar com a função da erro (Argument error)!!!!

Duvida em Formula

Enviado: 17 Mar 2017 15:22
por juniorcamilo

Duvida em Formula

Enviado: 17 Mar 2017 16:50
por JoséQuintas
Pra que complicar?
O problema é dividir por zero.

Código: Selecionar todos

Function Main() 
 Local nPerDes := 0, nTotal := 0, nAcre  := 0, nDesc  := 0, nTot1

nTot1  := ( nTotal + ( nTotal * ( nAcre/100 ) ) )
IF nTot1 == 0
   RETURN .T.
ENDIF
 nPerdes := nTot1 - nDesc
 nPerdes := nPerdes / nTot1
 nPerdes := 1 - nPerdes
 nPerdes := nPerdes * 100
RETURN .T.

Duvida em Formula

Enviado: 18 Mar 2017 09:50
por juniorcamilo
JoséQuintas escreveu:Pra que complicar?
O problema é dividir por zero.
sim sabia q era 'divisao por zero'!!, o que eu não sabia q o clipper tratava retornando '0', e a função

Código: Selecionar todos

proc ErrorSys()
  ErrorBlock( {|e| DefError(e)} )
return
, em si não tratava !!!! ai q aprendi no post como tratar!!!mas infelizmente, primeiro eu postei e depois q achei como tratar(falha minha)!!!
e o exemplo q dei era só para teste(simples entendimento do que eu queria passar aki no fórum)!!
(Obs: quanto mais tempo passo em clipper..., vejo o tanto q essa ferramenta é incrível!!!)
Obrigado !!!