Funcao de Erro
Moderador: Moderadores
- juniorcamilo
- Usuário Nível 3

- Mensagens: 343
- Registrado em: 10 Nov 2006 09:12
- Localização: Pará
Funcao de Erro
Amigos existe a funcao de erro que tem como finalidade converter os erros do clipper para portugues e tambem para evitar saida brusca do sistema em aguns casos de erro.. tive usando ela um tempo so que em rede ela da muito 'READ ERRO' mesmo colocando para retenter este erro continua chegando ao ponto que tive que tirar a funcao. Alguem ja passou por isso? Será que a minha função é que ta com algum erro de logica?
A solução está na alteração do ERRORSYS.Amigos existe a funcao de erro que tem como finalidade converter os erros do clipper para portugues e tambem para evitar saida brusca do sistema em aguns casos de erro..
Pode ser. Poste sua função para que possamos analisá-la.Será que a minha função é que ta com algum erro de logica?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- juniorcamilo
- Usuário Nível 3

- Mensagens: 343
- Registrado em: 10 Nov 2006 09:12
- Localização: Pará
/* ES_WARNING 1 / ES_ERROR 2 / ES_CATASTROPHIC 3
EG_ARG 1 / EG_BOUND 2 / EG_STROVERFLOW 3
EG_NUMOVERFLOW 4 / EG_ZERODIV 5 /
EG_MEM 11 / EG_NOFUNC 12 / EG_NOMETHOD 13
EG_NOVAR 14 / EG_NOALIAS 15 / EG_NOVARMETHOD 16
EG_BADALIAS 17 / EG_DUPALIAS 18 / EG_CREATE 20
EG_OPEN 21 / EG_CLOSE 22 / EG_READ 23
EG_WRITE 24 / EG_PRINT 25 / EG_UNSUPPORTED 30
EG_LIMIT 31 / EG_CORRUPTION 32 / EG_DATATYPE 33
EG_DATAWIDTH 34 / EG_NOTABLE 35 / EG_NOORDER 36
EG_SHARED 37 / EG_UNLOCKED 38 / EG_READONLY 39
EG_APPENDLOCK 40 / EG_LOCK 41 ///////////////////////*/
#define NTRIM(n) ( LTrim(Str(n)) )
Procedure ErrorSys()
desktop("")
ErrorBlock( {|e| DefError(e)} )
return .t.
function DefError(e)
local i, cMessage, aOptions, nChoice
Funcao := Procname(4)
Funcaolinha := Procline(4)
if e:genCode # 5
if ( e:genCode == 21 .and. e:osCode == 32 .and. e:canDefault )
NetErr(.t.)
return (.f.)
elseif ( e:genCode == 40 .and. e:canDefault )
NetErr(.t.)
return (.f.)
endif
cMessage := ErrorMessage(e)
cMessage += " (Local:"+Funcao+" Linha:"+str(FuncaoLinha,5)+")"
aOptions := {"Sair"}
if (e:canRetry) ; AAdd(aOptions, "Retentar") ; endif
if (e:canDefault); AAdd(aOptions, "Prosseguir"); endif
nChoice := 0
do while nChoice == 0
if Empty(e:osCode)
nChoice := Alert(cMessage, aOptions)
else
nChoice := Alert( cMessage + ;
";(ERRO SISTEMA " + NTRIM(e:osCode) + ")", ;
aOptions)
endif
if ( nChoice == NIL ); exit; endif
enddo
if (!Empty(nChoice))
if ( aOptions[nChoice] == "Sair" )
Sairerro(cMessage)
elseif ( aOptions[nChoice] == "Retentar" )
return (.t.)
elseif ( aOptions[nChoice] == "Prosseguir" )
return (.f.)
endif
endif
if ( !Empty(e:osCode) )
cMessage += " (DOS Error " + NTRIM(e:osCode) + ") "
endif
? cMessage
i := 2
do while (!Empty(ProcName(i)))
? "Called from", Trim(ProcName(i)) + ;
"(" + NTRIM(ProcLine(i)) + ") "
i++
enddo
ErrorLevel(1)
else &&& Erro de divisao por zero
*Return (.f.,0)
Return (.f.)
endif
Sairerro(cMessage)
return (.f.)
*******************************************************************************
* ErrorMessage()
*******************************************************************************
static func ErrorMessage(e)
local cMessage
cMessage := ""
if ( ValType(e:description) == "C" )
portugues := (" " + e:description)
if alltrim(portugues) == "Variable does not exist"
cMessage += " Variavel n„o Existe"
elseif alltrim(portugues) == "Corruption detected"
cMessage += " Corrup‡„o Detectada! Reorganize!"
elseif alltrim(portugues) == "Argument error"
cMessage += " Erro em Argumento!"
elseif alltrim(portugues) == "Print error"
cMessage += " Erro na Impressora Verifique!"
elseif alltrim(portugues) == "Create error"
cMessage += " Erro de Cria‡„o de Arquivo!"
elseif alltrim(portugues) == "Alias does not exist"
cMessage += " Alias(Apelido) n„o existe!"
elseif alltrim(portugues) == "Bound error"
cMessage += " Erro de Bound!"
elseif alltrim(portugues) == "String overflow"
cMessage += " Estouro de stringue!"
elseif alltrim(portugues) == "Numeric overflow"
cMessage += " Estouro de numero!"
elseif alltrim(portugues) == "Zero divisor"
cMessage += " Erro de divis„o por zero!"
elseif alltrim(portugues) == "Numeric error"
cMessage += " Erro de numero!"
elseif alltrim(portugues) == "Syntax error"
cMessage += " Erro na sintax!"
elseif alltrim(portugues) == "Memory low"
cMessage += " Memoria baixando verifique outros programas abertos!"
elseif alltrim(portugues) == "Undefined function"
cMessage += " Esta fun‡„o n„o existe!"
elseif alltrim(portugues) == "No exported method"
cMessage += " N„o exportado o metodo brause!"
elseif alltrim(portugues) == "No exported variable"
cMessage += " N„o exportado a variavel!"
elseif alltrim(portugues) == "Illegal characters in alias"
cMessage += " N„o pode se usar este Apelido!"
elseif alltrim(portugues) == "Alias already in use"
cMessage += " Alias (Apelido) sendo usado por outro!"
elseif alltrim(portugues) == "Create error"
cMessage += " Erro de Cria‡„o de Arquivo Verifique a Maquina!"
elseif alltrim(portugues) == "Open error"
cMessage += " Erro de Abertura de Arquivo Verifique a Maquina!"
elseif alltrim(portugues) == "Close error"
cMessage += " Erro de Fechamento de Arquivo Verifique a Maquina!"
elseif alltrim(portugues) == "Read error"
cMessage += " Erro de Leitura de Arquivo Verifique a Maquina!"
elseif alltrim(portugues) == "Write error"
cMessage += " Erro de Grava‡„o de Arquivo Verifique a Maquina!"
else
cMessage += (" " + e:description)
endif
endif
if ( !Empty(e:filename) )
cMessage += (" (" + e:filename+" ")
elseif ( !Empty(e:operation) )
cMessage += (" ->" + e:operation+"<- (")
endif
cMessage += if( e:severity > 1, "Erro ", "Fatal " )
if ( ValType(e:subsystem) == "C" )
cMessage += e:subsystem()
else
cMessage += "???"
endif
if ( ValType(e:subCode) == "N" )
cMessage += ("/" + NTRIM(e:subCode))
else
cMessage += "/???"
endif
cMessage += ")"
return (cMessage)
*------------------------------------------------------------------------------
Function Sairerro(cMessage)
Local contador := 1
Private cNomArq
cNomarq := "E"+strzero(Contador,7)
do while file(cNomArq+".ERR")
@ 10,20 say "Armazenando Erro em arquivo -->"+cNomarq
Contador++
cNomarq := "E"+strzero(Contador,7)
if Contador > 9999999
ferase(cNomArq+".ERR")
cNomarq := "E"+strzero(Contador,7)
exit
endif
enddo
cNomarq += ".ERR"
dbcloseall()
set printer on
set console off
set Device to screen
set PRINTER to &cNomArq.
? " ",date(),Time(),Getenv("USER")
? cMessage
set Printer to
set Printer off
set Device to screen
set Console on
set Cursor on
MsgBox3d1({"Erro em Maquina !! (Auto Prote‡„o!!)","Desligue a(s) Maquina(s), VERIFIQUE TODOS OS CABOS","e Religue-a(s)","Persistindo o Erro Chame assistencia!"},"Aviso do Sistema !!",,"&Saida",,,"GR+/r+","R+/w","R+/w")
Qexit(,,,.F.)
Return .t.
*-----------------------------------------------------------------------------
function VerErro(e)
local i, cMessage := "", aOptions, nChoice, tTelErro := savenv(00,00,24,80)
local nTecla := 0
Static ContEntradas := 1
i := 1
Funcao := {{},{}}
do while (!Empty(ProcName(i)))
aadd(Funcao[1],Procname(i)+space(25-len(alltrim(Procname(i)))))
aadd(Funcao[2],str(Procline(i),5))
i++
enddo
if e:genCode # 5 .and. e:genCode # 6 .and. e:genCode # 41 .and.;
e:genCode # 20 .and. e:genCode # 21 .and. e:genCode # 25
if e:genCode == 11 .or.;
e:genCode == 22 .or. e:genCode == 23 .or. e:genCode == 24 .or.;
e:genCode == 37 .or. e:genCode == 38 .or. e:genCode == 40 .or.;
e:genCode == 45
if e:canRetry == .t. .and. ContEntradas < 3
ContEntradas++
return (.t.)
elseif e:canDefault == .t. .and. ContEntradas < 5
ContEntradas++
NetErr(.t.)
return (.f.)
else
ContEntradas := 1
endif
endif
cMessage := ErroMensage(e)
aBtn := NewButton()
if e:canRetry == .t. ; AddButton(aBtn, 15,05,15, "&Retentar","Retentar a Opera‡„o") ; endif
if e:canDefault == .t.; AddButton(aBtn, 15,30,15, "&Prossequir","Tentar Pular o Erro."); endif
AddButton(aBtn, 15,55,15, "&Sair","Sair do Sistema",.t.)
nLinha := 2
Win(01,01,18,77,"Aviso do Sistema / Erro em Maquina ou Terminal","11/01","w+/w")
for a = 1 to len(cMessage) step 50
@ nLinha,02 say padc(substr(cMessage,a,50),76)
nLinha ++
next
nLinha ++
for a = 1 to len(funcao[1])
@ nLinha,02 say Funcao[1,a]+" - > "+Funcao[2,a]
nLinha ++
next
nopc := ProcButton(aBtn)
rstenv(tTelErro)
if (nopc == 1 .and. e:canRetry == .t. .and. e:canDefault == .t.) .or. ;
(nopc == 1 .and. e:canRetry == .t. .and. e:canDefault == .f.)
return (.t.)
elseif (nopc == 1 .and. e:canRetry == .f. .and. e:canDefault == .t.) .or. ;
(nopc == 2 .and. e:canRetry == .t. .and. e:canDefault == .t.)
return (.f.)
elseif (nopc == 1 .and. e:canRetry == .f. .and. e:canDefault == .f.) .or. ;
(nopc == 2 .and. e:canRetry == .t. .and. e:canDefault == .f.) .or. ;
(nopc == 2 .and. e:canRetry == .f. .and. e:canDefault == .t.) .or. Lastkey() == 27
Sair(cMessage)
endif
elseif e:genCode == 20 &&& "Erro de Cria‡„o de Arquivo Verifique a Maquina!"
msgbox3d("Retentando [ ] Criando Arquivo!!!",,,,"11/01","w+/w")
nTecla := 0
nTecla := Inkey(.1)
if nTecla == K_ESC .and. at(substr(Time(),8,1),"13579") # 0; cMessage := ErroMensage(e); Sair(cMessage+"SAIDA 20"); endif
@ 12,41 say processando()
rstenv(tTelErro)
NetErr(.t.)
return (.t.)
elseif e:genCode == 21 &&& Abertura de Arquivo rede
rstenv(tTelErro)
NetErr(.t.)
return (.f.)
elseif e:genCode == 25 &&& Erro de Impressora
msgbox3d("Retentando [ ] Verifique a Impressora!!!",,,,"11/01","w+/w")
nTecla := 0
nTecla := Inkey(.1)
if nTecla == K_ESC .and. at(substr(Time(),8,1),"13579") # 0; cMessage := ErroMensage(e); Sair(cMessage+"SAIDA 25"); endif
@ 12,41 say processando()
rstenv(tTelErro)
return (.t.)
elseif e:genCode == 41 &&& Erro de Rede Lock Failure
msgbox3d("Gravando Dados [ ] Aguarde!!!",,,,"11/01","w+/w")
nTecla := 0
nTecla := Inkey(.1)
@ 12,45 say processando()
if nTecla == K_ESC .and. at(substr(Time(),8,1),"13579") # 0; Sair(cMessage+"SAIDA 41 LOCK FAILURE"); endif
dbrunlock()
rstenv(tTelErro)
NetErr(.t.)
return (.t.)
else &&& Erro de divisao por zero
rstenv(tTelErro)
* Return (.f.,0)
Return (.f.)
endif
Sair(cMessage)
return (.f.)
*******************************************************************************
* ErroMensage()
*******************************************************************************
function ErroMensage(e)
local cMessage
cMessage := strzero(e:genCode(),4)+" - "
if ( ValType(e:description) == "C" )
if e:genCode == 1 &&alltrim(portugues) == "Argument error"
cMessage += "Erro em Argumento!"
elseif e:genCode == 2 &&alltrim(portugues) == "Bound error"
cMessage += "Erro de Bound!"
elseif e:genCode == 3 &&alltrim(portugues) == "String overflow"
cMessage += "Estouro de stringue!"
elseif e:genCode == 4 &&alltrim(portugues) == "Numeric overflow"
cMessage += "Estouro de numero!"
elseif e:genCode == 5 &&alltrim(portugues) == "Zero divisor"
cMessage += "Erro de divis„o por zero!"
elseif e:genCode == 6 &&alltrim(portugues) == "Numeric error"
cMessage += "Erro de numero!"
elseif e:genCode == 7 &&alltrim(portugues) == "Syntax error"
cMessage += "Erro na sintax!"
elseif e:genCode == 8 &&alltrim(portugues) == "Operation too completex"
cMessage += "Completar Opera‡„o!"
elseif e:genCode == 11 &&alltrim(portugues) == "Memory low"
cMessage += "Memoria baixando verifique outros programas abertos!"
elseif e:genCode == 12 &&alltrim(portugues) == "Undefined function"
cMessage += "Esta fun‡„o n„o existe!"
elseif e:genCode == 13 &&alltrim(portugues) == "No exported method"
cMessage += "N„o exportado o metodo brause!"
elseif e:genCode == 14 &&alltrim(portugues) == "Variable does not exist"
cMessage += "Variavel n„o Existe"
elseif e:genCode == 15 &&alltrim(portugues) == "Alias does not exist"
cMessage += "Alias(Apelido) n„o existe!"
elseif e:genCode == 16 &&alltrim(portugues) == "No exported variable"
cMessage += "N„o exportado a variavel!"
elseif e:genCode == 17 &&alltrim(portugues) == "Illegal characters in alias"
cMessage += "N„o pode se usar este Apelido!"
elseif e:genCode == 18 &&alltrim(portugues) == "Alias already in use"
cMessage += "Alias (Apelido) sendo usado por outro!"
elseif e:genCode == 20 &&alltrim(portugues) == "Create error"
cMessage += "Erro de Cria‡„o de Arquivo Verifique a Maquina!"
elseif e:genCode == 21 &&alltrim(portugues) == "Open error"
cMessage += "Erro de Abertura de Arquivo Verifique a Maquina!"
elseif e:genCode == 22 &&alltrim(portugues) == "Close error"
cMessage += "Erro de Fechamento de Arquivo Verifique a Maquina!"
elseif e:genCode == 23 &&alltrim(portugues) == "Read error"
cMessage += "Erro de Leitura de Arquivo Verifique a Maquina!"
elseif e:genCode == 24 &&alltrim(portugues) == "Write error"
cMessage += "Erro de Grava‡„o de Arquivo Verifique a Maquina!"
elseif e:genCode == 25 &&alltrim(portugues) == "Print error"
cMessage += "Erro na Impressora Verifique!"
elseif e:genCode == 30 &&alltrim(portugues) == "Operation not supported"
cMessage += "N„o Suportada a Opera‡„o!"
elseif e:genCode == 31 &&alltrim(portugues) == "Limite exeeded"
cMessage += "Exedeu o Limite!"
elseif e:genCode == 32 &&alltrim(portugues) == "Corruption detected"
cMessage += "Corrup‡„o Detectada! Reorganize!"
elseif e:genCode == 33 &&alltrim(portugues) == "Data type error"
cMessage += "Erro em tipo de Data!"
elseif e:genCode == 34 &&alltrim(portugues) == "Data width error"
cMessage += "Erro em gravamento de Data!"
elseif e:genCode == 35 &&alltrim(portugues) == "Workarea not in use"
cMessage += "Arquivo n„o esta em uso!"
elseif e:genCode == 36 &&alltrim(portugues) == "Workarea not indexed"
cMessage += "Arquivo n„o esta indexado!"
elseif e:genCode == 37 &&alltrim(portugues) == "Exclusive required"
cMessage += "Arquivo precisa ser aberto exclusivo!"
elseif e:genCode == 38 &&alltrim(portugues) == "Lock required"
cMessage += "Registro precisa ser em Loque!"
elseif e:genCode == 39 &&alltrim(portugues) == "Write not allowed"
cMessage += "Erro de Write n„o allowed!"
elseif e:genCode == 40 &&alltrim(portugues) == "Append Lock failed"
cMessage += "Erro de grava‡„o em Apend Loque!"
elseif e:genCode == 41 &&alltrim(portugues) == "Lock failure"
cMessage += "Falha no Luque de registro!"
elseif e:genCode == 45 &&alltrim(portugues) == "Lock error"
cMessage += "Erro em Luque de registro!"
elseif e:genCode == 46 &&alltrim(portugues) == "Lock Timeout"
cMessage += "Hora de Abetura de Lock de registro!"
else
cMessage += (" " + e:description)
endif
else
cMessage += " Sem Descri‡„o "
endif
cMessage += if(!Empty(e:filename),(" (" +e:filename+" "), " " )
cMessage += if(!Empty(e:operation),(" ->" +e:operation+"<- ("), " SEM OPERACAO" )
cMessage += if(e:severity > 1, " Erro ", " Fatal" )
cMessage += if(ValType(e:subsystem) == "C" ,e:subsystem(), "
" )
cMessage += if(ValType(e:subCode) == "N" ," /" + strzero(e:subCode,4), " /???" )
cMessage += ")"
return (cMessage)
*------------------------------------------------------------------------------
Function Sair(cMessage)
Local contador := 1
Private cNomArq
cNomarq := "E"+strzero(Contador,7)
do while file(cNomArq+".ERR")
@ 10,20 say "Armazenando Erro em arquivo -->"+cNomarq
Contador++
cNomarq := "E"+strzero(Contador,7)
if Contador > 9999999
ferase(cNomArq+".ERR")
cNomarq := "E"+strzero(Contador,7)
exit
endif
enddo
cNomarq += ".ERR"
dbcloseall()
set printer on
set console off
set Device to screen
set PRINTER to &cNomArq.
? " ",date(),Time(),getenv("USER")
for a = 1 to len(cMessage) step 50
? padc(substr(cMessage,a,50),76)
next
?
for a = 1 to len(funcao[1])
? Funcao[1,a]+" - > "+Funcao[2,a]
next
set Printer to
set Printer off
set Device to screen
set Console on
set Cursor on
MsgBox3d1({"Erro em Maquina !! (Auto Prote‡„o!!)","Desligue a(s) Maquina(s), VERIFIQUE TODOS OS CABOS","e Religue-a(s)","Persistindo o Erro Chame assistencia!"},"Aviso do Sistema !!",,"&Saida",,,"GR+/r+","R+/w","R+/w")
Qexit(,,,.F.)
Return .t.
EG_ARG 1 / EG_BOUND 2 / EG_STROVERFLOW 3
EG_NUMOVERFLOW 4 / EG_ZERODIV 5 /
EG_MEM 11 / EG_NOFUNC 12 / EG_NOMETHOD 13
EG_NOVAR 14 / EG_NOALIAS 15 / EG_NOVARMETHOD 16
EG_BADALIAS 17 / EG_DUPALIAS 18 / EG_CREATE 20
EG_OPEN 21 / EG_CLOSE 22 / EG_READ 23
EG_WRITE 24 / EG_PRINT 25 / EG_UNSUPPORTED 30
EG_LIMIT 31 / EG_CORRUPTION 32 / EG_DATATYPE 33
EG_DATAWIDTH 34 / EG_NOTABLE 35 / EG_NOORDER 36
EG_SHARED 37 / EG_UNLOCKED 38 / EG_READONLY 39
EG_APPENDLOCK 40 / EG_LOCK 41 ///////////////////////*/
#define NTRIM(n) ( LTrim(Str(n)) )
Procedure ErrorSys()
desktop("")
ErrorBlock( {|e| DefError(e)} )
return .t.
function DefError(e)
local i, cMessage, aOptions, nChoice
Funcao := Procname(4)
Funcaolinha := Procline(4)
if e:genCode # 5
if ( e:genCode == 21 .and. e:osCode == 32 .and. e:canDefault )
NetErr(.t.)
return (.f.)
elseif ( e:genCode == 40 .and. e:canDefault )
NetErr(.t.)
return (.f.)
endif
cMessage := ErrorMessage(e)
cMessage += " (Local:"+Funcao+" Linha:"+str(FuncaoLinha,5)+")"
aOptions := {"Sair"}
if (e:canRetry) ; AAdd(aOptions, "Retentar") ; endif
if (e:canDefault); AAdd(aOptions, "Prosseguir"); endif
nChoice := 0
do while nChoice == 0
if Empty(e:osCode)
nChoice := Alert(cMessage, aOptions)
else
nChoice := Alert( cMessage + ;
";(ERRO SISTEMA " + NTRIM(e:osCode) + ")", ;
aOptions)
endif
if ( nChoice == NIL ); exit; endif
enddo
if (!Empty(nChoice))
if ( aOptions[nChoice] == "Sair" )
Sairerro(cMessage)
elseif ( aOptions[nChoice] == "Retentar" )
return (.t.)
elseif ( aOptions[nChoice] == "Prosseguir" )
return (.f.)
endif
endif
if ( !Empty(e:osCode) )
cMessage += " (DOS Error " + NTRIM(e:osCode) + ") "
endif
? cMessage
i := 2
do while (!Empty(ProcName(i)))
? "Called from", Trim(ProcName(i)) + ;
"(" + NTRIM(ProcLine(i)) + ") "
i++
enddo
ErrorLevel(1)
else &&& Erro de divisao por zero
*Return (.f.,0)
Return (.f.)
endif
Sairerro(cMessage)
return (.f.)
*******************************************************************************
* ErrorMessage()
*******************************************************************************
static func ErrorMessage(e)
local cMessage
cMessage := ""
if ( ValType(e:description) == "C" )
portugues := (" " + e:description)
if alltrim(portugues) == "Variable does not exist"
cMessage += " Variavel n„o Existe"
elseif alltrim(portugues) == "Corruption detected"
cMessage += " Corrup‡„o Detectada! Reorganize!"
elseif alltrim(portugues) == "Argument error"
cMessage += " Erro em Argumento!"
elseif alltrim(portugues) == "Print error"
cMessage += " Erro na Impressora Verifique!"
elseif alltrim(portugues) == "Create error"
cMessage += " Erro de Cria‡„o de Arquivo!"
elseif alltrim(portugues) == "Alias does not exist"
cMessage += " Alias(Apelido) n„o existe!"
elseif alltrim(portugues) == "Bound error"
cMessage += " Erro de Bound!"
elseif alltrim(portugues) == "String overflow"
cMessage += " Estouro de stringue!"
elseif alltrim(portugues) == "Numeric overflow"
cMessage += " Estouro de numero!"
elseif alltrim(portugues) == "Zero divisor"
cMessage += " Erro de divis„o por zero!"
elseif alltrim(portugues) == "Numeric error"
cMessage += " Erro de numero!"
elseif alltrim(portugues) == "Syntax error"
cMessage += " Erro na sintax!"
elseif alltrim(portugues) == "Memory low"
cMessage += " Memoria baixando verifique outros programas abertos!"
elseif alltrim(portugues) == "Undefined function"
cMessage += " Esta fun‡„o n„o existe!"
elseif alltrim(portugues) == "No exported method"
cMessage += " N„o exportado o metodo brause!"
elseif alltrim(portugues) == "No exported variable"
cMessage += " N„o exportado a variavel!"
elseif alltrim(portugues) == "Illegal characters in alias"
cMessage += " N„o pode se usar este Apelido!"
elseif alltrim(portugues) == "Alias already in use"
cMessage += " Alias (Apelido) sendo usado por outro!"
elseif alltrim(portugues) == "Create error"
cMessage += " Erro de Cria‡„o de Arquivo Verifique a Maquina!"
elseif alltrim(portugues) == "Open error"
cMessage += " Erro de Abertura de Arquivo Verifique a Maquina!"
elseif alltrim(portugues) == "Close error"
cMessage += " Erro de Fechamento de Arquivo Verifique a Maquina!"
elseif alltrim(portugues) == "Read error"
cMessage += " Erro de Leitura de Arquivo Verifique a Maquina!"
elseif alltrim(portugues) == "Write error"
cMessage += " Erro de Grava‡„o de Arquivo Verifique a Maquina!"
else
cMessage += (" " + e:description)
endif
endif
if ( !Empty(e:filename) )
cMessage += (" (" + e:filename+" ")
elseif ( !Empty(e:operation) )
cMessage += (" ->" + e:operation+"<- (")
endif
cMessage += if( e:severity > 1, "Erro ", "Fatal " )
if ( ValType(e:subsystem) == "C" )
cMessage += e:subsystem()
else
cMessage += "???"
endif
if ( ValType(e:subCode) == "N" )
cMessage += ("/" + NTRIM(e:subCode))
else
cMessage += "/???"
endif
cMessage += ")"
return (cMessage)
*------------------------------------------------------------------------------
Function Sairerro(cMessage)
Local contador := 1
Private cNomArq
cNomarq := "E"+strzero(Contador,7)
do while file(cNomArq+".ERR")
@ 10,20 say "Armazenando Erro em arquivo -->"+cNomarq
Contador++
cNomarq := "E"+strzero(Contador,7)
if Contador > 9999999
ferase(cNomArq+".ERR")
cNomarq := "E"+strzero(Contador,7)
exit
endif
enddo
cNomarq += ".ERR"
dbcloseall()
set printer on
set console off
set Device to screen
set PRINTER to &cNomArq.
? " ",date(),Time(),Getenv("USER")
? cMessage
set Printer to
set Printer off
set Device to screen
set Console on
set Cursor on
MsgBox3d1({"Erro em Maquina !! (Auto Prote‡„o!!)","Desligue a(s) Maquina(s), VERIFIQUE TODOS OS CABOS","e Religue-a(s)","Persistindo o Erro Chame assistencia!"},"Aviso do Sistema !!",,"&Saida",,,"GR+/r+","R+/w","R+/w")
Qexit(,,,.F.)
Return .t.
*-----------------------------------------------------------------------------
function VerErro(e)
local i, cMessage := "", aOptions, nChoice, tTelErro := savenv(00,00,24,80)
local nTecla := 0
Static ContEntradas := 1
i := 1
Funcao := {{},{}}
do while (!Empty(ProcName(i)))
aadd(Funcao[1],Procname(i)+space(25-len(alltrim(Procname(i)))))
aadd(Funcao[2],str(Procline(i),5))
i++
enddo
if e:genCode # 5 .and. e:genCode # 6 .and. e:genCode # 41 .and.;
e:genCode # 20 .and. e:genCode # 21 .and. e:genCode # 25
if e:genCode == 11 .or.;
e:genCode == 22 .or. e:genCode == 23 .or. e:genCode == 24 .or.;
e:genCode == 37 .or. e:genCode == 38 .or. e:genCode == 40 .or.;
e:genCode == 45
if e:canRetry == .t. .and. ContEntradas < 3
ContEntradas++
return (.t.)
elseif e:canDefault == .t. .and. ContEntradas < 5
ContEntradas++
NetErr(.t.)
return (.f.)
else
ContEntradas := 1
endif
endif
cMessage := ErroMensage(e)
aBtn := NewButton()
if e:canRetry == .t. ; AddButton(aBtn, 15,05,15, "&Retentar","Retentar a Opera‡„o") ; endif
if e:canDefault == .t.; AddButton(aBtn, 15,30,15, "&Prossequir","Tentar Pular o Erro."); endif
AddButton(aBtn, 15,55,15, "&Sair","Sair do Sistema",.t.)
nLinha := 2
Win(01,01,18,77,"Aviso do Sistema / Erro em Maquina ou Terminal","11/01","w+/w")
for a = 1 to len(cMessage) step 50
@ nLinha,02 say padc(substr(cMessage,a,50),76)
nLinha ++
next
nLinha ++
for a = 1 to len(funcao[1])
@ nLinha,02 say Funcao[1,a]+" - > "+Funcao[2,a]
nLinha ++
next
nopc := ProcButton(aBtn)
rstenv(tTelErro)
if (nopc == 1 .and. e:canRetry == .t. .and. e:canDefault == .t.) .or. ;
(nopc == 1 .and. e:canRetry == .t. .and. e:canDefault == .f.)
return (.t.)
elseif (nopc == 1 .and. e:canRetry == .f. .and. e:canDefault == .t.) .or. ;
(nopc == 2 .and. e:canRetry == .t. .and. e:canDefault == .t.)
return (.f.)
elseif (nopc == 1 .and. e:canRetry == .f. .and. e:canDefault == .f.) .or. ;
(nopc == 2 .and. e:canRetry == .t. .and. e:canDefault == .f.) .or. ;
(nopc == 2 .and. e:canRetry == .f. .and. e:canDefault == .t.) .or. Lastkey() == 27
Sair(cMessage)
endif
elseif e:genCode == 20 &&& "Erro de Cria‡„o de Arquivo Verifique a Maquina!"
msgbox3d("Retentando [ ] Criando Arquivo!!!",,,,"11/01","w+/w")
nTecla := 0
nTecla := Inkey(.1)
if nTecla == K_ESC .and. at(substr(Time(),8,1),"13579") # 0; cMessage := ErroMensage(e); Sair(cMessage+"SAIDA 20"); endif
@ 12,41 say processando()
rstenv(tTelErro)
NetErr(.t.)
return (.t.)
elseif e:genCode == 21 &&& Abertura de Arquivo rede
rstenv(tTelErro)
NetErr(.t.)
return (.f.)
elseif e:genCode == 25 &&& Erro de Impressora
msgbox3d("Retentando [ ] Verifique a Impressora!!!",,,,"11/01","w+/w")
nTecla := 0
nTecla := Inkey(.1)
if nTecla == K_ESC .and. at(substr(Time(),8,1),"13579") # 0; cMessage := ErroMensage(e); Sair(cMessage+"SAIDA 25"); endif
@ 12,41 say processando()
rstenv(tTelErro)
return (.t.)
elseif e:genCode == 41 &&& Erro de Rede Lock Failure
msgbox3d("Gravando Dados [ ] Aguarde!!!",,,,"11/01","w+/w")
nTecla := 0
nTecla := Inkey(.1)
@ 12,45 say processando()
if nTecla == K_ESC .and. at(substr(Time(),8,1),"13579") # 0; Sair(cMessage+"SAIDA 41 LOCK FAILURE"); endif
dbrunlock()
rstenv(tTelErro)
NetErr(.t.)
return (.t.)
else &&& Erro de divisao por zero
rstenv(tTelErro)
* Return (.f.,0)
Return (.f.)
endif
Sair(cMessage)
return (.f.)
*******************************************************************************
* ErroMensage()
*******************************************************************************
function ErroMensage(e)
local cMessage
cMessage := strzero(e:genCode(),4)+" - "
if ( ValType(e:description) == "C" )
if e:genCode == 1 &&alltrim(portugues) == "Argument error"
cMessage += "Erro em Argumento!"
elseif e:genCode == 2 &&alltrim(portugues) == "Bound error"
cMessage += "Erro de Bound!"
elseif e:genCode == 3 &&alltrim(portugues) == "String overflow"
cMessage += "Estouro de stringue!"
elseif e:genCode == 4 &&alltrim(portugues) == "Numeric overflow"
cMessage += "Estouro de numero!"
elseif e:genCode == 5 &&alltrim(portugues) == "Zero divisor"
cMessage += "Erro de divis„o por zero!"
elseif e:genCode == 6 &&alltrim(portugues) == "Numeric error"
cMessage += "Erro de numero!"
elseif e:genCode == 7 &&alltrim(portugues) == "Syntax error"
cMessage += "Erro na sintax!"
elseif e:genCode == 8 &&alltrim(portugues) == "Operation too completex"
cMessage += "Completar Opera‡„o!"
elseif e:genCode == 11 &&alltrim(portugues) == "Memory low"
cMessage += "Memoria baixando verifique outros programas abertos!"
elseif e:genCode == 12 &&alltrim(portugues) == "Undefined function"
cMessage += "Esta fun‡„o n„o existe!"
elseif e:genCode == 13 &&alltrim(portugues) == "No exported method"
cMessage += "N„o exportado o metodo brause!"
elseif e:genCode == 14 &&alltrim(portugues) == "Variable does not exist"
cMessage += "Variavel n„o Existe"
elseif e:genCode == 15 &&alltrim(portugues) == "Alias does not exist"
cMessage += "Alias(Apelido) n„o existe!"
elseif e:genCode == 16 &&alltrim(portugues) == "No exported variable"
cMessage += "N„o exportado a variavel!"
elseif e:genCode == 17 &&alltrim(portugues) == "Illegal characters in alias"
cMessage += "N„o pode se usar este Apelido!"
elseif e:genCode == 18 &&alltrim(portugues) == "Alias already in use"
cMessage += "Alias (Apelido) sendo usado por outro!"
elseif e:genCode == 20 &&alltrim(portugues) == "Create error"
cMessage += "Erro de Cria‡„o de Arquivo Verifique a Maquina!"
elseif e:genCode == 21 &&alltrim(portugues) == "Open error"
cMessage += "Erro de Abertura de Arquivo Verifique a Maquina!"
elseif e:genCode == 22 &&alltrim(portugues) == "Close error"
cMessage += "Erro de Fechamento de Arquivo Verifique a Maquina!"
elseif e:genCode == 23 &&alltrim(portugues) == "Read error"
cMessage += "Erro de Leitura de Arquivo Verifique a Maquina!"
elseif e:genCode == 24 &&alltrim(portugues) == "Write error"
cMessage += "Erro de Grava‡„o de Arquivo Verifique a Maquina!"
elseif e:genCode == 25 &&alltrim(portugues) == "Print error"
cMessage += "Erro na Impressora Verifique!"
elseif e:genCode == 30 &&alltrim(portugues) == "Operation not supported"
cMessage += "N„o Suportada a Opera‡„o!"
elseif e:genCode == 31 &&alltrim(portugues) == "Limite exeeded"
cMessage += "Exedeu o Limite!"
elseif e:genCode == 32 &&alltrim(portugues) == "Corruption detected"
cMessage += "Corrup‡„o Detectada! Reorganize!"
elseif e:genCode == 33 &&alltrim(portugues) == "Data type error"
cMessage += "Erro em tipo de Data!"
elseif e:genCode == 34 &&alltrim(portugues) == "Data width error"
cMessage += "Erro em gravamento de Data!"
elseif e:genCode == 35 &&alltrim(portugues) == "Workarea not in use"
cMessage += "Arquivo n„o esta em uso!"
elseif e:genCode == 36 &&alltrim(portugues) == "Workarea not indexed"
cMessage += "Arquivo n„o esta indexado!"
elseif e:genCode == 37 &&alltrim(portugues) == "Exclusive required"
cMessage += "Arquivo precisa ser aberto exclusivo!"
elseif e:genCode == 38 &&alltrim(portugues) == "Lock required"
cMessage += "Registro precisa ser em Loque!"
elseif e:genCode == 39 &&alltrim(portugues) == "Write not allowed"
cMessage += "Erro de Write n„o allowed!"
elseif e:genCode == 40 &&alltrim(portugues) == "Append Lock failed"
cMessage += "Erro de grava‡„o em Apend Loque!"
elseif e:genCode == 41 &&alltrim(portugues) == "Lock failure"
cMessage += "Falha no Luque de registro!"
elseif e:genCode == 45 &&alltrim(portugues) == "Lock error"
cMessage += "Erro em Luque de registro!"
elseif e:genCode == 46 &&alltrim(portugues) == "Lock Timeout"
cMessage += "Hora de Abetura de Lock de registro!"
else
cMessage += (" " + e:description)
endif
else
cMessage += " Sem Descri‡„o "
endif
cMessage += if(!Empty(e:filename),(" (" +e:filename+" "), " " )
cMessage += if(!Empty(e:operation),(" ->" +e:operation+"<- ("), " SEM OPERACAO" )
cMessage += if(e:severity > 1, " Erro ", " Fatal" )
cMessage += if(ValType(e:subsystem) == "C" ,e:subsystem(), "
cMessage += if(ValType(e:subCode) == "N" ," /" + strzero(e:subCode,4), " /???" )
cMessage += ")"
return (cMessage)
*------------------------------------------------------------------------------
Function Sair(cMessage)
Local contador := 1
Private cNomArq
cNomarq := "E"+strzero(Contador,7)
do while file(cNomArq+".ERR")
@ 10,20 say "Armazenando Erro em arquivo -->"+cNomarq
Contador++
cNomarq := "E"+strzero(Contador,7)
if Contador > 9999999
ferase(cNomArq+".ERR")
cNomarq := "E"+strzero(Contador,7)
exit
endif
enddo
cNomarq += ".ERR"
dbcloseall()
set printer on
set console off
set Device to screen
set PRINTER to &cNomArq.
? " ",date(),Time(),getenv("USER")
for a = 1 to len(cMessage) step 50
? padc(substr(cMessage,a,50),76)
next
?
for a = 1 to len(funcao[1])
? Funcao[1,a]+" - > "+Funcao[2,a]
next
set Printer to
set Printer off
set Device to screen
set Console on
set Cursor on
MsgBox3d1({"Erro em Maquina !! (Auto Prote‡„o!!)","Desligue a(s) Maquina(s), VERIFIQUE TODOS OS CABOS","e Religue-a(s)","Persistindo o Erro Chame assistencia!"},"Aviso do Sistema !!",,"&Saida",,,"GR+/r+","R+/w","R+/w")
Qexit(,,,.F.)
Return .t.
- juniorcamilo
- Usuário Nível 3

- Mensagens: 343
- Registrado em: 10 Nov 2006 09:12
- Localização: Pará
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
Camilo!
Postei um exemplo aqui no forum e se vc quiser pode testar, o exempo tem as modificações do errorsys e outras funções de contrale de erros, vem também a lib da GAS para vc poder compilar junto, e vem um arquivos dbf para que a função mostre os erros em portugues.
Hoje já fiz algumas modificações na errorsys que traz a opção de gravar os erros em um dbf e assim voce pode aconpanhar os erros de cada usuário e depois pode ser mandado um email dos erros, fica muito cômodo.
http://suportegas.com.br/portal/downloa ... 26ERRO.ZIP
Espero ter ajudado.
Postei um exemplo aqui no forum e se vc quiser pode testar, o exempo tem as modificações do errorsys e outras funções de contrale de erros, vem também a lib da GAS para vc poder compilar junto, e vem um arquivos dbf para que a função mostre os erros em portugues.
Hoje já fiz algumas modificações na errorsys que traz a opção de gravar os erros em um dbf e assim voce pode aconpanhar os erros de cada usuário e depois pode ser mandado um email dos erros, fica muito cômodo.
http://suportegas.com.br/portal/downloa ... 26ERRO.ZIP
Espero ter ajudado.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
- juniorcamilo
- Usuário Nível 3

- Mensagens: 343
- Registrado em: 10 Nov 2006 09:12
- Localização: Pará
Realmente. Sem a identação fica ruim pacas pra ler. Mas é fácil. Edite sua mensagem e coloque as tags que informam o interpretador a identar. No começo do código use [ code ] e no final dele, [ \ code ]. Eu inseri espaços para que não fosse interpretado. Mas você remova o espaço dessas strings.juniorcamilo escreveu:aproposito como faço para sair = ao meu prg... ele come os espaços tds, ai fica 1/2 complicado uma linha debaixo da outra sem tabulacao...?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Bah fica muito dificil mesmo...abaixo o mesmo codigo acima só que dentro do [ CODE ]
Boa Sorte !!!
Código: Selecionar todos
/* ES_WARNING 1 / ES_ERROR 2 / ES_CATASTROPHIC 3
EG_ARG 1 / EG_BOUND 2 / EG_STROVERFLOW 3
EG_NUMOVERFLOW 4 / EG_ZERODIV 5 /
EG_MEM 11 / EG_NOFUNC 12 / EG_NOMETHOD 13
EG_NOVAR 14 / EG_NOALIAS 15 / EG_NOVARMETHOD 16
EG_BADALIAS 17 / EG_DUPALIAS 18 / EG_CREATE 20
EG_OPEN 21 / EG_CLOSE 22 / EG_READ 23
EG_WRITE 24 / EG_PRINT 25 / EG_UNSUPPORTED 30
EG_LIMIT 31 / EG_CORRUPTION 32 / EG_DATATYPE 33
EG_DATAWIDTH 34 / EG_NOTABLE 35 / EG_NOORDER 36
EG_SHARED 37 / EG_UNLOCKED 38 / EG_READONLY 39
EG_APPENDLOCK 40 / EG_LOCK 41 ///////////////////////*/
#define NTRIM(n) ( LTrim(Str(n)) )
Procedure ErrorSys()
desktop("")
ErrorBlock( {|e| DefError(e)} )
return .t.
function DefError(e)
local i, cMessage, aOptions, nChoice
Funcao := Procname(4)
Funcaolinha := Procline(4)
if e:genCode # 5
if ( e:genCode == 21 .and. e:osCode == 32 .and. e:canDefault )
NetErr(.t.)
return (.f.)
elseif ( e:genCode == 40 .and. e:canDefault )
NetErr(.t.)
return (.f.)
endif
cMessage := ErrorMessage(e)
cMessage += " (Local:"+Funcao+" Linha:"+str(FuncaoLinha,5)+")"
aOptions := {"Sair"}
if (e:canRetry) ; AAdd(aOptions, "Retentar") ; endif
if (e:canDefault); AAdd(aOptions, "Prosseguir"); endif
nChoice := 0
do while nChoice == 0
if Empty(e:osCode)
nChoice := Alert(cMessage, aOptions)
else
nChoice := Alert( cMessage + ;
";(ERRO SISTEMA " + NTRIM(e:osCode) + ")", ;
aOptions)
endif
if ( nChoice == NIL ); exit; endif
enddo
if (!Empty(nChoice))
if ( aOptions[nChoice] == "Sair" )
Sairerro(cMessage)
elseif ( aOptions[nChoice] == "Retentar" )
return (.t.)
elseif ( aOptions[nChoice] == "Prosseguir" )
return (.f.)
endif
endif
if ( !Empty(e:osCode) )
cMessage += " (DOS Error " + NTRIM(e:osCode) + ") "
endif
? cMessage
i := 2
do while (!Empty(ProcName(i)))
? "Called from", Trim(ProcName(i)) + ;
"(" + NTRIM(ProcLine(i)) + ") "
i++
enddo
ErrorLevel(1)
else &&& Erro de divisao por zero
*Return (.f.,0)
Return (.f.)
endif
Sairerro(cMessage)
return (.f.)
*******************************************************************************
* ErrorMessage()
*******************************************************************************
static func ErrorMessage(e)
local cMessage
cMessage := ""
if ( ValType(e:description) == "C" )
portugues := (" " + e:description)
if alltrim(portugues) == "Variable does not exist"
cMessage += " Variavel n„o Existe"
elseif alltrim(portugues) == "Corruption detected"
cMessage += " Corrup‡„o Detectada! Reorganize!"
elseif alltrim(portugues) == "Argument error"
cMessage += " Erro em Argumento!"
elseif alltrim(portugues) == "Print error"
cMessage += " Erro na Impressora Verifique!"
elseif alltrim(portugues) == "Create error"
cMessage += " Erro de Cria‡„o de Arquivo!"
elseif alltrim(portugues) == "Alias does not exist"
cMessage += " Alias(Apelido) n„o existe!"
elseif alltrim(portugues) == "Bound error"
cMessage += " Erro de Bound!"
elseif alltrim(portugues) == "String overflow"
cMessage += " Estouro de stringue!"
elseif alltrim(portugues) == "Numeric overflow"
cMessage += " Estouro de numero!"
elseif alltrim(portugues) == "Zero divisor"
cMessage += " Erro de divis„o por zero!"
elseif alltrim(portugues) == "Numeric error"
cMessage += " Erro de numero!"
elseif alltrim(portugues) == "Syntax error"
cMessage += " Erro na sintax!"
elseif alltrim(portugues) == "Memory low"
cMessage += " Memoria baixando verifique outros programas abertos!"
elseif alltrim(portugues) == "Undefined function"
cMessage += " Esta fun‡„o n„o existe!"
elseif alltrim(portugues) == "No exported method"
cMessage += " N„o exportado o metodo brause!"
elseif alltrim(portugues) == "No exported variable"
cMessage += " N„o exportado a variavel!"
elseif alltrim(portugues) == "Illegal characters in alias"
cMessage += " N„o pode se usar este Apelido!"
elseif alltrim(portugues) == "Alias already in use"
cMessage += " Alias (Apelido) sendo usado por outro!"
elseif alltrim(portugues) == "Create error"
cMessage += " Erro de Cria‡„o de Arquivo Verifique a Maquina!"
elseif alltrim(portugues) == "Open error"
cMessage += " Erro de Abertura de Arquivo Verifique a Maquina!"
elseif alltrim(portugues) == "Close error"
cMessage += " Erro de Fechamento de Arquivo Verifique a Maquina!"
elseif alltrim(portugues) == "Read error"
cMessage += " Erro de Leitura de Arquivo Verifique a Maquina!"
elseif alltrim(portugues) == "Write error"
cMessage += " Erro de Grava‡„o de Arquivo Verifique a Maquina!"
else
cMessage += (" " + e:description)
endif
endif
if ( !Empty(e:filename) )
cMessage += (" (" + e:filename+" ")
elseif ( !Empty(e:operation) )
cMessage += (" ->" + e:operation+"<- (")
endif
cMessage += if( e:severity > 1, "Erro ", "Fatal " )
if ( ValType(e:subsystem) == "C" )
cMessage += e:subsystem()
else
cMessage += "???"
endif
if ( ValType(e:subCode) == "N" )
cMessage += ("/" + NTRIM(e:subCode))
else
cMessage += "/???"
endif
cMessage += ")"
return (cMessage)
*------------------------------------------------------------------------------
Function Sairerro(cMessage)
Local contador := 1
Private cNomArq
cNomarq := "E"+strzero(Contador,7)
do while file(cNomArq+".ERR")
@ 10,20 say "Armazenando Erro em arquivo -->"+cNomarq
Contador++
cNomarq := "E"+strzero(Contador,7)
if Contador > 9999999
ferase(cNomArq+".ERR")
cNomarq := "E"+strzero(Contador,7)
exit
endif
enddo
cNomarq += ".ERR"
dbcloseall()
set printer on
set console off
set Device to screen
set PRINTER to &cNomArq.
? " ",date(),Time(),Getenv("USER")
? cMessage
set Printer to
set Printer off
set Device to screen
set Console on
set Cursor on
MsgBox3d1({"Erro em Maquina !! (Auto Prote‡„o!!)","Desligue a(s) Maquina(s), VERIFIQUE TODOS OS CABOS","e Religue-a(s)","Persistindo o Erro Chame assistencia!"},"Aviso do Sistema !!",,"&Saida",,,"GR+/r+","R+/w","R+/w")
Qexit(,,,.F.)
Return .t.
*-----------------------------------------------------------------------------
function VerErro(e)
local i, cMessage := "", aOptions, nChoice, tTelErro := savenv(00,00,24,80)
local nTecla := 0
Static ContEntradas := 1
i := 1
Funcao := {{},{}}
do while (!Empty(ProcName(i)))
aadd(Funcao[1],Procname(i)+space(25-len(alltrim(Procname(i)))))
aadd(Funcao[2],str(Procline(i),5))
i++
enddo
if e:genCode # 5 .and. e:genCode # 6 .and. e:genCode # 41 .and.;
e:genCode # 20 .and. e:genCode # 21 .and. e:genCode # 25
if e:genCode == 11 .or.;
e:genCode == 22 .or. e:genCode == 23 .or. e:genCode == 24 .or.;
e:genCode == 37 .or. e:genCode == 38 .or. e:genCode == 40 .or.;
e:genCode == 45
if e:canRetry == .t. .and. ContEntradas < 3
ContEntradas++
return (.t.)
elseif e:canDefault == .t. .and. ContEntradas < 5
ContEntradas++
NetErr(.t.)
return (.f.)
else
ContEntradas := 1
endif
endif
cMessage := ErroMensage(e)
aBtn := NewButton()
if e:canRetry == .t. ; AddButton(aBtn, 15,05,15, "&Retentar","Retentar a Opera‡„o") ; endif
if e:canDefault == .t.; AddButton(aBtn, 15,30,15, "&Prossequir","Tentar Pular o Erro."); endif
AddButton(aBtn, 15,55,15, "&Sair","Sair do Sistema",.t.)
nLinha := 2
Win(01,01,18,77,"Aviso do Sistema / Erro em Maquina ou Terminal","11/01","w+/w")
for a = 1 to len(cMessage) step 50
@ nLinha,02 say padc(substr(cMessage,a,50),76)
nLinha ++
next
nLinha ++
for a = 1 to len(funcao[1])
@ nLinha,02 say Funcao[1,a]+" - > "+Funcao[2,a]
nLinha ++
next
nopc := ProcButton(aBtn)
rstenv(tTelErro)
if (nopc == 1 .and. e:canRetry == .t. .and. e:canDefault == .t.) .or. ;
(nopc == 1 .and. e:canRetry == .t. .and. e:canDefault == .f.)
return (.t.)
elseif (nopc == 1 .and. e:canRetry == .f. .and. e:canDefault == .t.) .or. ;
(nopc == 2 .and. e:canRetry == .t. .and. e:canDefault == .t.)
return (.f.)
elseif (nopc == 1 .and. e:canRetry == .f. .and. e:canDefault == .f.) .or. ;
(nopc == 2 .and. e:canRetry == .t. .and. e:canDefault == .f.) .or. ;
(nopc == 2 .and. e:canRetry == .f. .and. e:canDefault == .t.) .or. Lastkey() == 27
Sair(cMessage)
endif
elseif e:genCode == 20 &&& "Erro de Cria‡„o de Arquivo Verifique a Maquina!"
msgbox3d("Retentando [ ] Criando Arquivo!!!",,,,"11/01","w+/w")
nTecla := 0
nTecla := Inkey(.1)
if nTecla == K_ESC .and. at(substr(Time(),8,1),"13579") # 0; cMessage := ErroMensage(e); Sair(cMessage+"SAIDA 20"); endif
@ 12,41 say processando()
rstenv(tTelErro)
NetErr(.t.)
return (.t.)
elseif e:genCode == 21 &&& Abertura de Arquivo rede
rstenv(tTelErro)
NetErr(.t.)
return (.f.)
elseif e:genCode == 25 &&& Erro de Impressora
msgbox3d("Retentando [ ] Verifique a Impressora!!!",,,,"11/01","w+/w")
nTecla := 0
nTecla := Inkey(.1)
if nTecla == K_ESC .and. at(substr(Time(),8,1),"13579") # 0; cMessage := ErroMensage(e); Sair(cMessage+"SAIDA 25"); endif
@ 12,41 say processando()
rstenv(tTelErro)
return (.t.)
elseif e:genCode == 41 &&& Erro de Rede Lock Failure
msgbox3d("Gravando Dados [ ] Aguarde!!!",,,,"11/01","w+/w")
nTecla := 0
nTecla := Inkey(.1)
@ 12,45 say processando()
if nTecla == K_ESC .and. at(substr(Time(),8,1),"13579") # 0; Sair(cMessage+"SAIDA 41 LOCK FAILURE"); endif
dbrunlock()
rstenv(tTelErro)
NetErr(.t.)
return (.t.)
else &&& Erro de divisao por zero
rstenv(tTelErro)
* Return (.f.,0)
Return (.f.)
endif
Sair(cMessage)
return (.f.)
*******************************************************************************
* ErroMensage()
*******************************************************************************
function ErroMensage(e)
local cMessage
cMessage := strzero(e:genCode(),4)+" - "
if ( ValType(e:description) == "C" )
if e:genCode == 1 &&alltrim(portugues) == "Argument error"
cMessage += "Erro em Argumento!"
elseif e:genCode == 2 &&alltrim(portugues) == "Bound error"
cMessage += "Erro de Bound!"
elseif e:genCode == 3 &&alltrim(portugues) == "String overflow"
cMessage += "Estouro de stringue!"
elseif e:genCode == 4 &&alltrim(portugues) == "Numeric overflow"
cMessage += "Estouro de numero!"
elseif e:genCode == 5 &&alltrim(portugues) == "Zero divisor"
cMessage += "Erro de divis„o por zero!"
elseif e:genCode == 6 &&alltrim(portugues) == "Numeric error"
cMessage += "Erro de numero!"
elseif e:genCode == 7 &&alltrim(portugues) == "Syntax error"
cMessage += "Erro na sintax!"
elseif e:genCode == 8 &&alltrim(portugues) == "Operation too completex"
cMessage += "Completar Opera‡„o!"
elseif e:genCode == 11 &&alltrim(portugues) == "Memory low"
cMessage += "Memoria baixando verifique outros programas abertos!"
elseif e:genCode == 12 &&alltrim(portugues) == "Undefined function"
cMessage += "Esta fun‡„o n„o existe!"
elseif e:genCode == 13 &&alltrim(portugues) == "No exported method"
cMessage += "N„o exportado o metodo brause!"
elseif e:genCode == 14 &&alltrim(portugues) == "Variable does not exist"
cMessage += "Variavel n„o Existe"
elseif e:genCode == 15 &&alltrim(portugues) == "Alias does not exist"
cMessage += "Alias(Apelido) n„o existe!"
elseif e:genCode == 16 &&alltrim(portugues) == "No exported variable"
cMessage += "N„o exportado a variavel!"
elseif e:genCode == 17 &&alltrim(portugues) == "Illegal characters in alias"
cMessage += "N„o pode se usar este Apelido!"
elseif e:genCode == 18 &&alltrim(portugues) == "Alias already in use"
cMessage += "Alias (Apelido) sendo usado por outro!"
elseif e:genCode == 20 &&alltrim(portugues) == "Create error"
cMessage += "Erro de Cria‡„o de Arquivo Verifique a Maquina!"
elseif e:genCode == 21 &&alltrim(portugues) == "Open error"
cMessage += "Erro de Abertura de Arquivo Verifique a Maquina!"
elseif e:genCode == 22 &&alltrim(portugues) == "Close error"
cMessage += "Erro de Fechamento de Arquivo Verifique a Maquina!"
elseif e:genCode == 23 &&alltrim(portugues) == "Read error"
cMessage += "Erro de Leitura de Arquivo Verifique a Maquina!"
elseif e:genCode == 24 &&alltrim(portugues) == "Write error"
cMessage += "Erro de Grava‡„o de Arquivo Verifique a Maquina!"
elseif e:genCode == 25 &&alltrim(portugues) == "Print error"
cMessage += "Erro na Impressora Verifique!"
elseif e:genCode == 30 &&alltrim(portugues) == "Operation not supported"
cMessage += "N„o Suportada a Opera‡„o!"
elseif e:genCode == 31 &&alltrim(portugues) == "Limite exeeded"
cMessage += "Exedeu o Limite!"
elseif e:genCode == 32 &&alltrim(portugues) == "Corruption detected"
cMessage += "Corrup‡„o Detectada! Reorganize!"
elseif e:genCode == 33 &&alltrim(portugues) == "Data type error"
cMessage += "Erro em tipo de Data!"
elseif e:genCode == 34 &&alltrim(portugues) == "Data width error"
cMessage += "Erro em gravamento de Data!"
elseif e:genCode == 35 &&alltrim(portugues) == "Workarea not in use"
cMessage += "Arquivo n„o esta em uso!"
elseif e:genCode == 36 &&alltrim(portugues) == "Workarea not indexed"
cMessage += "Arquivo n„o esta indexado!"
elseif e:genCode == 37 &&alltrim(portugues) == "Exclusive required"
cMessage += "Arquivo precisa ser aberto exclusivo!"
elseif e:genCode == 38 &&alltrim(portugues) == "Lock required"
cMessage += "Registro precisa ser em Loque!"
elseif e:genCode == 39 &&alltrim(portugues) == "Write not allowed"
cMessage += "Erro de Write n„o allowed!"
elseif e:genCode == 40 &&alltrim(portugues) == "Append Lock failed"
cMessage += "Erro de grava‡„o em Apend Loque!"
elseif e:genCode == 41 &&alltrim(portugues) == "Lock failure"
cMessage += "Falha no Luque de registro!"
elseif e:genCode == 45 &&alltrim(portugues) == "Lock error"
cMessage += "Erro em Luque de registro!"
elseif e:genCode == 46 &&alltrim(portugues) == "Lock Timeout"
cMessage += "Hora de Abetura de Lock de registro!"
else
cMessage += (" " + e:description)
endif
else
cMessage += " Sem Descri‡„o "
endif
cMessage += if(!Empty(e:filename),(" (" +e:filename+" "), " " )
cMessage += if(!Empty(e:operation),(" ->" +e:operation+"<- ("), " SEM OPERACAO" )
cMessage += if(e:severity > 1, " Erro ", " Fatal" )
cMessage += if(ValType(e:subsystem) == "C" ,e:subsystem(), " ???" )
cMessage += if(ValType(e:subCode) == "N" ," /" + strzero(e:subCode,4), " /???" )
cMessage += ")"
return (cMessage)
*------------------------------------------------------------------------------
Function Sair(cMessage)
Local contador := 1
Private cNomArq
cNomarq := "E"+strzero(Contador,7)
do while file(cNomArq+".ERR")
@ 10,20 say "Armazenando Erro em arquivo -->"+cNomarq
Contador++
cNomarq := "E"+strzero(Contador,7)
if Contador > 9999999
ferase(cNomArq+".ERR")
cNomarq := "E"+strzero(Contador,7)
exit
endif
enddo
cNomarq += ".ERR"
dbcloseall()
set printer on
set console off
set Device to screen
set PRINTER to &cNomArq.
? " ",date(),Time(),getenv("USER")
for a = 1 to len(cMessage) step 50
? padc(substr(cMessage,a,50),76)
next
?
for a = 1 to len(funcao[1])
? Funcao[1,a]+" - > "+Funcao[2,a]
next
set Printer to
set Printer off
set Device to screen
set Console on
set Cursor on
MsgBox3d1({"Erro em Maquina !! (Auto Prote‡„o!!)","Desligue a(s) Maquina(s), VERIFIQUE TODOS OS CABOS","e Religue-a(s)","Persistindo o Erro Chame assistencia!"},"Aviso do Sistema !!",,"&Saida",,,"GR+/r+","R+/w","R+/w")
Qexit(,,,.F.)
Return .t.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
Uma função gigantesca dessas duas vezes? Bastava o colega editar a mensagem. Faltou um pouquinho de paciência, até ele ver a minha mensagem.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Não entendeu? Valha-me, Senhor!!!
Explicando: eu já disse pra ele, em outra mensagem (vide acima), como fazer pro código aparecer identado. Eu quis dizer a você que, se tivesse tido um pouquinho mais de paciência e esperasse que ele lesse minha mensagem instrutiva, ele próprio editaria sua mensagem (a mensagem dele, viu?) para fazer a correção. Assim, você não perderia seu tempo em fazer o que ele poderia ter feito. Entendeu agora, né?
Explicando: eu já disse pra ele, em outra mensagem (vide acima), como fazer pro código aparecer identado. Eu quis dizer a você que, se tivesse tido um pouquinho mais de paciência e esperasse que ele lesse minha mensagem instrutiva, ele próprio editaria sua mensagem (a mensagem dele, viu?) para fazer a correção. Assim, você não perderia seu tempo em fazer o que ele poderia ter feito. Entendeu agora, né?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Pra usar esse seu ERROSYS é só compilar o ERRO.PRG e a lib GASP52PM.LIB junto com minha aplicação???clodoaldomonteiro escreveu: Postei um exemplo aqui no forum e se vc quiser pode testar, o exempo tem as modificações do errorsys e outras funções de contrale de erros, vem também a lib da GAS para vc poder compilar junto, e vem um arquivos dbf para que a função mostre os erros em portugues.
Jânio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Outra coisa...
Funciona com clipper5.3 tbem???
Jânio
Funciona com clipper5.3 tbem???
Jânio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Não conheço o GAS. Não posso dizer com certeza o que ele faz.
Quanto ao Clipper v5.3, também não uso, mas muito provavelmente, é o mesmo esquema da versão 5.2.
Quanto ao Clipper v5.3, também não uso, mas muito provavelmente, é o mesmo esquema da versão 5.2.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- juniorcamilo
- Usuário Nível 3

- Mensagens: 343
- Registrado em: 10 Nov 2006 09:12
- Localização: Pará
maligno obrigado pela dica
Código: Selecionar todos
if teste = teste
teste := teste
else
teste := teste
endif

