kapiaba Posted January 17, 2014 Report Share Posted January 17, 2014 Galera ajuda ai, como faço para bloquear o Error dos 64 por exemplo no Errsysw.prg e disparar para este link? http://pt.kioskea.net/faq/7012-codigos-de-erros-do-windows-parte-1 Para que o uçuário tente pelo menos aprender a ler? 64 O nome da rede especificado não está mais disponível. Obg. Abs. Quote Link to comment Share on other sites More sharing options...
emotta Posted January 17, 2014 Report Share Posted January 17, 2014 Na funcao ERRSYSW.PRG voce pode fazer a sua intervenção pelas propriedades do objeto de erro, assim: if (oError:GenCode == 64) // AQUI VOCE COLOCA SEU CODIGO PARA ABRIR O LINK oError:canRetry := .T. ErrorSys() return .T. EndIfEu faço uma intervenção semelhante no ERRSYSW.PRG quando da ALIAS não existe eu mando abrir a tabela. abraços Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 17, 2014 Author Report Share Posted January 17, 2014 Fiz assim Eduardo, o que voce acha? FOR i := 1 to 88 IF ( e:genCode ) > 1 .AND. ( e:genCode ) <= 88 ? [ENTROU NO ERRO DE REDE... ] QUIT ENDIF NEXT Baseado nesta numeração: http://fivewin.com.br/index.php?/topic/19563-erro-do-dos-64-dbfcdx1010/ Obg. abs. Quote Link to comment Share on other sites More sharing options...
vagner Posted January 17, 2014 Report Share Posted January 17, 2014 Kapi, Sem função essa sua, vai fazer 88 vezes e comparar a mesma coisa, não precisa do FOR NEXT Uso tb igual ao Eduardo, e mando ainda um e-mail com o erro para eu próprio Quote Link to comment Share on other sites More sharing options...
emotta Posted January 17, 2014 Report Share Posted January 17, 2014 Esse FOR está sem sentido algum ai no seu fonte... rs... Quanto ao range dos codigos de erro é de acordo com sua necessidade... Mas acredito que esteja correto (tirando o FOR) Fiz assim Eduardo, o que voce acha? FOR i := 1 to 88 IF ( e:genCode ) > 1 .AND. ( e:genCode ) <= 88 ? [ENTROU NO ERRO DE REDE... ] QUIT ENDIF NEXT Baseado nesta numeração: http://fivewin.com.br/index.php?/topic/19563-erro-do-dos-64-dbfcdx1010/ Obg. abs. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 17, 2014 Author Report Share Posted January 17, 2014 Beleza, dúvida: Quem retorna o erro DOS ERROR 64? e:GenCode ou e:osCode? Obg. abs. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 17, 2014 Author Report Share Posted January 17, 2014 Um ERRSYSW.PRG assim, seria ideal... /*** * Errorsys.prg * Standard Clipper 5.0 error handler * Copyright (c) 1990 Nantucket Corp. All rights reserved. * * Compile: /m/n/w */ #include "error.ch" // put messages to STDERR #command ? <list,...> => ?? Chr(13) + Chr(10) ; ?? <list> #command ?? <list,...> => OutErr(<list>) // used below #define NTRIM(n) ( LTrim(Str(n)) ) /*** * ErrorSys() * * Note: automatically executes at startup */ proc ErrorSys() Private ErrorSys ErrorSys := 9876543210 ErrorBlock( {|e| DefError(e)} ) return .t. /*** * DefError() */ static func DefError(e) local i, cMessage, aOptions, nChoice, nCreate := 0 // by default, division by zero yields zero if ( e:genCode == EG_ZERODIV ) return (0) end // neste caso retorna sempre sem erro if ( e:osCode = 5 ) return (0) end if ( e:osCode >= 50 .and. e:osCode <= 55 ) return (0) end // for network open error, set NETERR() and subsystem default if ( e:genCode == EG_OPEN .and. e:osCode == 32 .and. e:canDefault ) NetErr(.t.) return (.f.) // NOTE end // for lock error during APPEND BLANK, set NETERR() and subsystem default if ( e:genCode == EG_APPENDLOCK .and. e:canDefault ) NetErr(.t.) return (.f.) // NOTE end // build error message cMessage := ErrorMessage(e) // build options array // aOptions := {"Parar", "Sair"} aOptions := {"Sair"} if (e:canRetry) AAdd(aOptions, "Denovo") // return (.t.) end if (e:canDefault) return (.f.) // AAdd(aOptions, "Padr„o") end // Dispositivo nao existente na rede if e:osCode = 5 return (.t.) end if (e:osCode >= 50 .and. e:osCode <= 55) return (.t.) end // put up alert box nChoice := 0 while ( nChoice == 0 ) if ( Empty(e:osCode) ) nChoice := Alert( cMessage, aOptions ) else nChoice := Alert( cMessage + ; DOSErro(e:osCode) , ; aOptions ) endif if ( nChoice == NIL ) exit endif end //if '1003' $ cMessage .or. 'Variavel nao encontrada' $ cMessage // if Alert ( '!!! ATENCAO !!!;;' + ; // 'Um campo esta faltando na estrutura de uma tabela. Escolha a op‡„o necessaria para que o mesmo seja criado ou abandone e contacte o suporte.;'+ ; // 'Favor verificar antes de continuar!', {"Continua","Abandona"} ) = 1 // close databases // CriArq('U') // endif //endif if ( !Empty(nChoice) ) // do as instructed if ( aOptions[nChoice] == "Parar" ) Close DataBases Break(e) elseif ( aOptions[nChoice] == "Denovo" ) return (.t.) elseif ( aOptions[nChoice] == "Padr„o" ) return (.f.) end end // display message and traceback if ( !Empty(e:osCode) ) cMessage += DOSErro( e:osCode ) end i := 2 do while ( !Empty(ProcName(i)) ) if procline(i) > 0 LogSystem( Trim(ProcName(i)), cMessage, NTRIM(ProcLine(i)) ) exit endif i++ end ErrorLevel(1) quit return (.f.) /*** * ErrorMessage() */ static func ErrorMessage(e) local cMessage // start error message cMessage := if( e:severity > ES_WARNING, "Erro ", "Cuidado " ) // add subsystem name if available if ( ValType(e:subsystem) == "C" ) cMessage += e:subsystem() else cMessage += "???" end // add subsystem's error code if available if ( ValType(e:subCode) == "N" ) cMessage += ("/" + NTRIM(e:subCode)) else cMessage += "/???" end // add error description if available if ( ValType(e:description) == "C" ) errdesc := alltrim( e:description ) if errdesc = 'Bound error' ; retry = .f. ; errdesc := 'Ultrapassou tamanho do vetor' elseif errdesc = 'Variable does not exist' ; retry = .f. ; errdesc := 'Variavel nao encontrada' elseif errdesc = 'Argument error' ; retry = .f. ; errdesc := 'Erro no argumento' elseif errdesc = 'Corruption detected' ; retry = .f. ; errdesc := 'Arquivo corrompido' elseif errdesc = 'Alias does not exist' ; retry = .f. ; errdesc := 'Arquivo nao esta em uso' elseif errdesc = 'Open error' ; retry = .f. ; errdesc := 'Erro de abertura do arquivo' elseif errdesc = 'Print error' ; retry = .t. ; errdesc := 'Impressora desligada ou desconectada' elseif errdesc = 'Workarea not in use' ; retry = .t. ; errdesc := 'Area de trabalho nao aberta' elseif errdesc = 'Workarea not indexed' ; retry = .t. ; errdesc := 'Area de trabalho sem indice('+dbf()+')' elseif errdesc = 'Limit exceeded' ; retry = .t. ; errdesc := 'Limite ultrapassado' elseif errdesc = 'No exported variable' ; retry = .t. ; errdesc := 'Variavel n„o exportvel' elseif errdesc = 'No exported method' ; retry = .t. ; errdesc := 'M‚todo n„o exportvel' elseif errdesc = 'Data type error' ; retry = .t. ; errdesc := 'Tipo de dado impr¢prio' elseif errdesc = 'Lock required' ; retry = .t. ; errdesc := 'Travamento solicitado' elseif errdesc = 'Exclusive required' ; retry = .t. ; errdesc := 'Exclusividade solicitada' elseif errdesc = 'Unrecoverable error' ; retry = .t. ; errdesc := 'Erro inrecupervel' elseif errdesc = 'Conventional memory exhausted'; retry = .t. ; errdesc := 'Sem mem¢ria Convencional' elseif errdesc = 'field numeric overflow' ; retry = .f. ; errdesc := 'ultrapassado limite do campo num‚rico.' elseif errdesc = 'expression error' ; retry = .f. ; errdesc := 'erro de express„o.' elseif errdesc = 'type mismatch' ; retry = .f. ; errdesc := 'erro de tipo.' elseif errdesc = 'zero divide' ; retry = .f. ; errdesc := 'imposs¡vel divis„o por zero.' elseif errdesc = 'run error' ; retry = .t. ; errdesc := 'erro de execu‡„o de programa externo.' elseif errdesc = 'undefined identifier' ; retry = .f. ; errdesc := 'identificador n„o foi definido pr‚viamente.' elseif errdesc = 'not an array' ; retry = .f. ; errdesc := 'n„o ‚ um array.' elseif errdesc = 'missing EXTERNAL' ; retry = .f. ; errdesc := 'procedimento externo n„o foi encontrado.' endif cMessage += (" " + errdesc ) // e:description) end // add either filename or operation if ( !Empty(e:filename) ) cMessage += (": " + e:filename) elseif ( !Empty(e:operation) ) cMessage += (": " + e:operation) end return (cMessage) FUNCTION DOSErro( qual ) private FALHA[ 89 ] if qual = 0 .or. qual > 89 qual = 89 endif FALHA[ 1 ] = "Numero de funcao invalida" FALHA[ 2 ] = "ARQUIVO nao encontrado" FALHA[ 3 ] = "Path nao encontrado" FALHA[ 4 ] = "Muitos ARQUIVOs abertos" FALHA[ 5 ] = "Acesso negado" FALHA[ 6 ] = "HANDLE invalido" FALHA[ 7 ] = "Bloco de controle de memoria destruido" FALHA[ 8 ] = "Memoria insuficiente" FALHA[ 9 ] = "Endereco de bloco de memoria invalido" FALHA[ 10 ] = "Dispositivo invalido" FALHA[ 11 ] = "Formatacao invalida" FALHA[ 12 ] = "Codigo de acesso invalido" FALHA[ 13 ] = "Dados invalidos" FALHA[ 14 ] = "Reservado" FALHA[ 15 ] = "Acionador de disco invalido" FALHA[ 16 ] = "Tentou remover do diretorio corrente" FALHA[ 17 ] = "Dispositivo nao e o mesmo" FALHA[ 18 ] = "Nao ha mais ARQUIVO" FALHA[ 19 ] = "Disco protegido contra gravacao" FALHA[ 20 ] = "Unidade de disco desconhecida" FALHA[ 21 ] = "Impossivel leitura de disco" FALHA[ 22 ] = "Comando desconhecido" FALHA[ 23 ] = "Informacao errada" FALHA[ 24 ] = "Comprimento da estrutura esta ruim" FALHA[ 25 ] = "Erro na pesquisa" FALHA[ 26 ] = "Unidade de armazenagem desconhecida" FALHA[ 27 ] = "Setor nao encontrado" FALHA[ 28 ] = "Papel de saida da impressora" FALHA[ 29 ] = "Gravacao invalida" FALHA[ 30 ] = "Leitura invalida" FALHA[ 31 ] = "Falha geral" FALHA[ 32 ] = "Violacao de divisao" FALHA[ 33 ] = "Violacao de bloqueio" FALHA[ 34 ] = "Mudanca de disco invalida" FALHA[ 35 ] = "Ineficaz FCB" FALHA[ 36 ] = "Reservado" FALHA[ 37 ] = "Reservado" FALHA[ 38 ] = "Reservado" FALHA[ 39 ] = "Reservado" FALHA[ 40 ] = "Reservado" FALHA[ 41 ] = "Reservado" FALHA[ 42 ] = "Reservado" FALHA[ 43 ] = "Reservado" FALHA[ 44 ] = "Reservado" FALHA[ 45 ] = "Reservado" FALHA[ 46 ] = "Reservado" FALHA[ 47 ] = "Reservado" FALHA[ 48 ] = "Reservado" FALHA[ 49 ] = "Reservado" FALHA[ 50 ] = "Nao suporta rede requerida" FALHA[ 51 ] = "Nao suporta pedido da rede" FALHA[ 52 ] = "Nome da rede duplicado" FALHA[ 53 ] = "Nome da rede nao encontrado" FALHA[ 54 ] = "Rede ativa" FALHA[ 55 ] = "Dispositivo nao existente na rede" FALHA[ 56 ] = "Limite de comandos da NETBIOS excedido" FALHA[ 57 ] = "Erro no adaptador do hardware da rede" FALHA[ 58 ] = "Resposta da rede incorreta" FALHA[ 59 ] = "Erro inesperado na rede" FALHA[ 60 ] = "Adaptador remoto imcompativel" FALHA[ 61 ] = "Fila de impressao esta cheia" FALHA[ 62 ] = "Fila de impressao esta cheia" FALHA[ 63 ] = "ARQUIVO de impressao eliminado" FALHA[ 64 ] = "Nome da rede eliminado" FALHA[ 65 ] = "Acesso negado" FALHA[ 66 ] = "Incorreto tipo de dispositivo da rede" FALHA[ 67 ] = "Nome da rede nao encontrado" FALHA[ 68 ] = "Limite excedido para o nome da rede" FALHA[ 69 ] = "Limite de sessao do NETBIOS excedido" FALHA[ 70 ] = "Pausa temporaria" FALHA[ 71 ] = "Pedido de rede negado" FALHA[ 72 ] = "Redirecionamento Impressora / disco pausado" FALHA[ 73 ] = "Reservado" FALHA[ 74 ] = "Reservado" FALHA[ 75 ] = "Reservado" FALHA[ 76 ] = "Reservado" FALHA[ 77 ] = "Reservado" FALHA[ 78 ] = "Reservado" FALHA[ 79 ] = "Reservado" FALHA[ 80 ] = "ARQUIVO ja existente" FALHA[ 81 ] = "Reservado" FALHA[ 82 ] = "Impossivel criar diretorio" FALHA[ 83 ] = "Ocorreu falha em INT 24H" FALHA[ 84 ] = "Muitos redirecionamentos" FALHA[ 85 ] = "Redirecionamento duplicado" FALHA[ 86 ] = "Senha invalida" FALHA[ 87 ] = "Parametro invalido" FALHA[ 88 ] = "Defeito no dispositivo da rede" FALHA[ 89 ] = "Nenhum erro ocorrido !" RETURN( ", "+FALHA[ qual ] ) FUNCTION LogSystem PARAMETER name, info, line ret_line := "chr(13)+chr(10)" errfile := "error.log" IF !FILE(errfile) errhandle = FCREATE(errfile) FWRITE(errhandle,"Segue lista de erros ocorridos"+&ret_line.) FWRITE(errhandle,"pelo detector de erros System Error"+&ret_line.) FWRITE(errhandle,"Programa Utilitrio."+&ret_line.+&ret_line.) FWRITE(errhandle,"Erros: "+&ret_line.) ELSE errhandle = FOPEN(errfile,1) length = FSEEK(errhandle,0,2) FSEEK(errhandle,length) ENDIF FWRITE(errhandle,DTOC(DATE())+" "+TIME()+" Descoberto ("+info+")"+&ret_line.) FWRITE(errhandle," na linha "+line+" no m¢dulo "+name+"."+&ret_line.+&ret_line.) FCLOSE(errhandle) RETURN(.T.) FUNCTION LogBackup( MINHA_INFO ) ret_line := "chr(13)+chr(10)" errfile := "backup.log" IF !FILE(errfile) errhandle = FCREATE(errfile) FWRITE(errhandle,"Segue lista de processos detectados."+&ret_line.+&ret_line.) FWRITE(errhandle,"Data Hora Operador Processo"+&ret_line.) FWRITE(errhandle,replicate("-",80)+&ret_line.+&ret_line.) ELSE errhandle = FOPEN(errfile,1) length = FSEEK(errhandle,0,2) FSEEK(errhandle,length) ENDIF FWRITE(errhandle,DTOC(DATE())+" "+TIME()+" "+M->OPERADOR+" "+MINHA_INFO+&ret_line.) FCLOSE(errhandle) //MEMOEDIT(10,10,20,70,MEMOREAD(errfile)) RETURN(.T.) Quote Link to comment Share on other sites More sharing options...
emotta Posted January 17, 2014 Report Share Posted January 17, 2014 isso nao sei, simula ai pra ver.... Beleza, dúvida: Quem retorna o erro DOS ERROR 64? e:GenCode ou e:osCode? Obg. abs. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 17, 2014 Author Report Share Posted January 17, 2014 kkkkkkk, to sem rede, para variar, está caindo o mundo(chuva) aqui em sampa, máquinas desligadas. abs. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 17, 2014 Author Report Share Posted January 17, 2014 Resolvido assim: // Error handler system adapted to FiveWin // ErrSysW.prg // Modificado em: 17/01/2014 - Joao Display tava ruim. #include "error.ch" #include "FiveWin.ch" external _fwGenError // Link FiveWin generic Error Objects Generator #define NTRIM(n) ( LTrim( Str( n ) ) ) #ifdef __CLIPPER__ #define DLG_TITLE "FiveWin: The CA-Clipper for Windows Library" #else #ifdef __HARBOUR__ #define DLG_TITLE "PlenoWin - Contato Sistemas - Erros do Programa" #command QUIT => ( PostQuitMessage( 0 ), __Quit() ) #else #define DLG_TITLE "FiveWin for Xbase++" #endif #endif /************* * ErrorSys() * * Note: automatically executes at startup */ proc ErrorSys() ErrorBlock( { | e | ErrorDialog( e ) } ) return proc ErrorLink() return /************* * ErrorDialog() */ static function ErrorDialog( e ) // -> logical or quits App. local oDlg, oLbx, oFont local lRet // if lRet == nil -> default action: QUIT local n, j, cMessage, aStack := {} local oSay, hLogo, oEditar, oSaida, oFnt local nButtons := 1 local cErrorLog := "" local aVersions := GetVersion() local aTasks local aRDDs, nTarget, uValue local oOldError local cRelation local lIsWinNT := IsWinNT() LOCAL Nome_Arq, nRegistro, cMsg, cTexto PUBLIC cVersaoNota, DeOndePartiu // by default, division by zero yields zero if ( e:genCode == EG_ZERODIV ) return 0 end // for network open error, set NETERR() and subsystem default if ( e:genCode == EG_OPEN .and. ; ( e:osCode == 32 .or. e:osCode == 5 ) .and. ; e:canDefault ) NetErr( .t. ) return .f. // Warning: Exiting! end // for lock error during APPEND BLANK, set NETERR() and subsystem default if ( e:genCode == EG_APPENDLOCK .and. e:canDefault ) NetErr( .t. ) return .f. // OJO SALIDA endif if Left( ProcName( 7 ), 10 ) == "ERRORDIALO" SET RESOURCES TO ErrorLevel( 1 ) QUIT endif IF .NOT. EMPTY( e:OsCode ) ENDIF ErrorBlock( {|e| MsgStop( ErrorMessage(e) + " em Errorsys, linha:" + ; Str( ProcLine( 1 ), 3 ) ), __quit() } ) // Incluido em 27/06/2013 By Joao Santos - Sao Paulo - Brasil IF UPPER(e:Description)="CORRUPTION DETECTED" .OR. ; UPPER(e:Description)="DETECTADO ÖNDICE CORROMPIDO" .OR. ; UPPER(e:Description)="DETECTADO INDICE CORROMPIDO" IF DeOndePartiu = [PARTIUDERMAIL] // Veio de RMAIL.PRG //? OemToAnsi( UPPER(e:Description) ) //? LEFT(RIGHT(e:FileName,12),8)+".CDX" //? [DeOndePartiu],DeOndePartiu MsgInfo( OemToAnsi( "ATEN€ÇO USUµRIO: " )+CRLF+ ; OemToAnsi( "O PROGRAMA DA NOTA FISCAL ELETRâNICA " )+CRLF+ ; OemToAnsi( "DETECTOU QUE UM DOS INDICES DA µREA, " )+CRLF+ ; OemToAnsi( "DE EMAIL, ESTµ CORROMPIDO(CORRUP€ÇO)." )+CRLF+ ; OemToAnsi( "VOU FECHAR OS BANCOS DOS EMAILS... " )+CRLF+ ; OemToAnsi( "E TENTAR RECUPERAR OS INDICES..... " )+CRLF+ ; OemToAnsi( "DESCRI€ÇO: " + UPPER(e:Description) )+CRLF+ ; OemToAnsi( "ÖNDICE........: " + LEFT(RIGHT(e:FileName,12),8)+".CDX" )+CRLF+ ; OemToAnsi( "VOU DESLIGAR O PROGRAMA DA NF-e... " )+CRLF+ ; OemToAnsi( "ENTRE PELO ICONE DA NF-e NOVAMENTE..." )+CRLF+ ; OemToAnsi( "TECLE <ENTER> PARA CONTINUAR... " ), ; OemToAnsi( "Banco de Dados dos Emails Corruptos. " ) ) DBCLOSEALL() MsgMeter( { | oMeter, oText, oDlg, lEnd | ; BuildIndex( oMeter, oText, oDlg, @lEnd ) },; "Indexando Servidores, Espere..." ) /* If LEFT(RIGHT(e:FileName,12),8)$"tablaaindizar" // Pode-se usar o //fErase(cFileIndice) // chamar o indexador aqui se quiser parar pelo nome do arquivo Endif */ QUIT // ERRO NO BANCO DE DADOS DO PLENO NADA POSSO FAZER, POIS TEM Q SAIR DA REDE ELSE MsgInfo( OemToAnsi( "ATEN€ÇO USUµRIO: " )+CRLF+ ; OemToAnsi( "O PROGRAMA DA NOTA FISCAL ELETRâNICA " )+CRLF+ ; OemToAnsi( "DETECTOU QUE UM DOS INDICES DO PLENO " )+CRLF+ ; OemToAnsi( "ESTµ CORROMPIDO(CORRUP€ÇO DE ÖNDICE). " )+CRLF+ ; OemToAnsi( "DESCRI€ÇO: " + UPPER(e:Description) )+CRLF+ ; OemToAnsi( "ÖNDICE...: " + LEFT(RIGHT(e:FileName,12),8)+".CDX" )+CRLF+ ; OemToAnsi( "SAIA DA NOTA FISCAL ELETRâNICA E ENTRE" )+CRLF+ ; OemToAnsi( "NOS PAR¶METROS DO PLENO E REINDEXE " )+CRLF+ ; OemToAnsi( "TODOS OS BANCOS DE DADOS DO PLENO. " )+CRLF+ ; OemToAnsi( "ISTO UM AVISO DE ALGUM PROBLEMA. " )+CRLF+ ; OemToAnsi( "TECLE <ENTER> PARA CONTINUAR... " ), ; OemToAnsi( "Banco de Dados do Pleno com Problemas." ) ) ENDIF ENDIF // Incluido em 26/07/2013 By Joao Santos - Problemas na ANDALUZIA/Gilmaria. IF UPPER(e:Description) = "LOCK REQUIRED" .OR. ; UPPER(e:Description) = "TRAVAMENTO REQUERIDO" .OR. ; UPPER(e:Description) = "FALHA NO TRAVAMENTO" .OR. ; UPPER(e:Description) = "FALHA NO TRAVAMENTO DO APPEND" .OR. ; UPPER(e:Description) = "USO EXCLUSIVO REQUERIDO" .OR. ; UPPER(e:Description) = "Erro DBFCDX/1002 erro ao Abrir" .OR. ; UPPER(e:Description) = "Erro DBFCDX/1002 erro Open (DOS Erro 2)" .OR. ; UPPER(e:Description) = "Error DBFCDX/1002 Open error" .OR.; UPPER(e:Description) = "Error DBFCDX/1002 Open error (DOS Error 2)" .OR.; UPPER(e:Description) = "(DOS Error 2) DBFCDX/1002 ERRO DE ABERTURA" .OR.; UPPER(e:Description) = "Erro DBFCDX/1001 erro ao Abrir" .OR.; UPPER(e:Description) = "Erro DBFCDX/1001 erro Open (DOS Erro 2)" .OR.; UPPER(e:Description) = "Error DBFCDX/1001 Open error" .OR.; UPPER(e:Description) = "Error DBFCDX/1001 Open error (DOS Error 2)" .OR.; UPPER(e:Description) = "(DOS Error 2) DBFCDX/1001 ERRO DE ABERTURA" MsgInfo( OemToAnsi( "ATEN€ÇO USUµRIO: " )+CRLF+ ; OemToAnsi( "O PROGRAMA DA NOTA FISCAL ELETRâNICA " )+CRLF+ ; OemToAnsi( "DETECTOU PROBLEMAS NA ABERTURA DA REDE." )+CRLF+ ; OemToAnsi( " " )+CRLF+ ; OemToAnsi( "DESCRI€ÇO: "+UPPER(e:Description) )+CRLF+ ; OemToAnsi( "ÖNDICE...: "+LEFT(RIGHT(e:FileName,12),8)+".CDX" )+CRLF+ ; OemToAnsi( " " )+CRLF+ ; OemToAnsi( "SAIA DA NOTA FISCAL ELETRâNICA E ENTRE " )+CRLF+ ; OemToAnsi( "NOS PAR¶METROS DO PLENO E REINDEXE " )+CRLF+ ; OemToAnsi( "TODOS OS BANCOS DE DADOS DO PLENO. " )+CRLF+ ; OemToAnsi( "ISTO UM AVISO DE ALGUM PROBLEMA. " )+CRLF+ ; OemToAnsi( "SE PERSISTIR ESTE ERRO, RECOMENDAMOS, " )+CRLF+ ; OemToAnsi( "CHAMAR SEU TCNICO DE INFORMµTICA E " )+CRLF+ ; OemToAnsi( "PEDIR PARA ELE VER SUA PLACA DE REDE, " )+CRLF+ ; OemToAnsi( "BEM COMO SEUS PENTES DE MEMàRIA E O " )+CRLF+ ; OemToAnsi( "CABO DE REDE DE SEU COMPUTADOR. " )+CRLF+ ; OemToAnsi( "TECLE <ENTER> PARA CONTINUAR... " ), ; OemToAnsi( "Possivel Problema na Sua Rede/Micro. " ) ) DBCLOSEALL() QUIT ENDIF cErrorLog += "Aplicação" + CRLF cErrorLog += "=========" + CRLF cErrorLog += " Caminho e Nome: " + GetModuleFileName( GetInstance() ) #ifdef __CLIPPER__ cErrorLog += " (16 bits)" + CRLF #else cErrorLog += " (32 bits)" + CRLF #endif cErrorLog += " Tamanho: " + Transform( FSize( GetModuleFileName( ; GetInstance() ) ), "9,999,999 bytes" ) + CRLF #ifdef __CLIPPER__ cErrorLog += " Máximo de Arquivos Permitidos: ( SetHandleCount() ) " + ; Str( SetHandleCount(), 3 ) + CRLF #endif cErrorLog += " Tempo em Execucao: " + TimeFromStart() + CRLF cErrorLog += " Erro Ocorrido em: " + ; DToC( Date() ) + ", " + Time() + CRLF // Error object analysis cMessage = " Descricao do Erro: " + UPPER( ErrorMessage( e ) ) + CRLF cErrorLog += cMessage IF .NOT. EMPTY( e:osCode ) // INCLUIDO EM: 17/01/2014 - Joao Alert( cMessage + DOSErro(e:osCode) ) ENDIF if ValType( e:Args ) == "A" cErrorLog += " Argumentos:" + CRLF for n = 1 to Len( e:Args ) cErrorLog += " [" + Str( n, 4 ) + "] = " + ValType( e:Args[ n ] ) + ; " " + cValToChar( e:Args[ n ] ) + CRLF next endif cErrorLog += CRLF + "Lista dos Erros" + CRLF cErrorLog += "===============" + CRLF n := 2 // we don't disscard any info again ! while ( n < 74 ) if ! Empty(ProcName( n ) ) AAdd( aStack, " Erro em: " + ProcFile( n ) + " => " + Trim( ProcName( n ) ) + ; "(" + NTRIM( ProcLine( n ) ) + ")" ) cErrorLog += ATail( aStack ) + CRLF endif n++ end cErrorLog += CRLF + "Sistema" + CRLF cErrorLog += "=======" + CRLF #ifdef __CLIPPER__ cErrorLog += " Processador: " + GetCPU() + CRLF #else cErrorLog += " Processador: " + GetCPU() + " " + ; AllTrim( Str( GetCPUSpeed() ) ) + " Mhz" + CRLF #endif cErrorLog += " Memória: " + ; cValToChar( Int( nExtMem() / ( 1024 * 1024 ) ) + 1 ) + ; " mb" + CRLF + CRLF cErrorLog += " Recursos do Sistema Livre: " + AllTrim( Str( GetFreeSystemResources( 0 ) ) ) + " %" + CRLF + ; " Recursos GDI: " + AllTrim( Str( GetFreeSystemResources( 1 ) ) ) + " %" + CRLF + ; " Recursos de Usuário: " + AllTrim( Str( GetFreeSystemResources( 2 ) ) ) + " %" + CRLF + CRLF cErrorLog += " Versão do Compilador: " + Version() + CRLF #ifdef __CLIPPER__ cErrorLog += " Versão do Windows e MS-Dos: " + ; AllTrim( Str( aVersions[ 1 ] ) ) + "." + ; AllTrim( Str( aVersions[ 2 ] ) ) + ", " + ; AllTrim( Str( aVersions[ 3 ] ) ) + "." + ; AllTrim( Str( aVersions[ 4 ] ) ) + CRLF + CRLF #else cErrorLog += " Versão do Windows: " + ; AllTrim( Str( aVersions[ 1 ] ) ) + "." + ; AllTrim( Str( aVersions[ 2 ] ) ) + ", Build " + ; AllTrim( Str( aVersions[ 3 ] ) ) + ; " " + aVersions[ 5 ] + CRLF + CRLF #endif aTasks = GetTasks() cErrorLog += " Total de Aplicativos em Execução no Windows: " + ; AllTrim( Str( Len( aTasks ) ) ) + CRLF for n = 1 to Len( aTasks ) cErrorLog += " " + Str( n, 3 ) + " " + aTasks[ n ] + CRLF next // Warning!!! Keep here this code !!! Or we will be consuming GDI as // we don't generate the error but we were generating the bitmap //hLogo = FWBitMap() if e:canRetry nButtons++ endif if e:canDefault nButtons++ endif cErrorLog += CRLF + "Variaveis em Uso" + CRLF + "================" + CRLF cErrorLog += " Módulo Tipo Valor" + CRLF cErrorLog += " ==========================" + CRLF n := 2 // we don't disscard any info again ! while ( n < 74 ) if ! Empty( ProcName( n ) ) cErrorLog += " " + Trim( ProcName( n ) ) + CRLF for j = 1 to ParamCount( n ) cErrorLog += " Param " + Str( j, 3 ) + ": " + ; ValType( GetParam( n, j ) ) + ; " " + cGetInfo( GetParam( n, j ) ) + CRLF next for j = 1 to LocalCount( n ) cErrorLog += " Local " + Str( j, 3 ) + ": " + ; ValType( GetLocal( n, j ) ) + ; " " + cGetInfo( GetLocal( n, j ) ) + CRLF next endif n++ end cErrorLog += CRLF + "RDD's Usados" + CRLF + "============" + CRLF aRDDs = RddList( 1 ) for n = 1 to Len( aRDDs ) cErrorLog += " " + aRDDs[ n ] + CRLF next cErrorLog += CRLF + "Banco de Dados em Uso" + CRLF + "=====================" + CRLF for n = 1 to 255 if ! Empty( Alias( n ) ) cErrorLog += CRLF + Str( n, 3 ) + ": " + If( Select() == n,"=> ", " " ) + ; PadR( Alias( n ), 15 ) + Space( 20 ) + "Nome do RDD: " + ; ( Alias( n ) )->( RddName() ) + CRLF cErrorLog += " ==============================" + CRLF cErrorLog += " RecNo RecCount BOF EOF" + CRLF cErrorLog += " " + Transform( ( Alias( n ) )->( RecNo() ), "99999" ) + ; " " + Transform( ( Alias( n ) )->( RecCount() ), "99999" ) + ; " " + cValToChar( ( Alias( n ) )->( BoF() ) ) + ; " " + cValToChar( ( Alias( n ) )->( EoF() ) ) + CRLF + CRLF cErrorLog += " Indices em Uso " + Space( 23 ) + "Nome da Tag:" + CRLF for j = 1 to 15 if ! Empty( ( Alias( n ) )->( IndexKey( j ) ) ) cErrorLog += Space( 8 ) + ; If( ( Alias( n ) )->( IndexOrd() ) == j, "=> ", " " ) + ; PadR( ( Alias( n ) )->( IndexKey( j ) ), 35 ) + ; ( Alias( n ) )->( OrdName( j ) ) + ; CRLF endif next cErrorLog += CRLF + " Relacionamentos em Uso" + CRLF for j = 1 to 8 if ! Empty( ( nTarget := ( Alias( n ) )->( DbRSelect( j ) ) ) ) cErrorLog += Space( 8 ) + Str( j ) + ": " + ; "TO " + ( Alias( n ) )->( DbRelation( j ) ) + ; " INTO " + Alias( nTarget ) + CRLF // uValue = ( Alias( n ) )->( DbRelation( j ) ) // cErrorLog += cValToChar( &( uValue ) ) + CRLF endif next endif next n = 1 cErrorLog += CRLF + "Classes em Uso:" + CRLF cErrorLog += "===============" + CRLF while ! Empty( __ClassName( n ) ) cErrorLog += " " + Str( n, 3 ) + " " + __ClassName( n++ ) + CRLF end cErrorLog += CRLF + "Analise da Memória" + CRLF cErrorLog += "==================" + CRLF #ifdef __CLIPPER__ cErrorLog += " Static memory:" + CRLF cErrorLog += " data segment: 64k" + CRLF #endif #ifdef __CLIPPER__ cErrorLog += " Initial size: " + ; LTrim( Str( nInitDSSize() ) ) + ; " bytes (SYMP=" + LTrim( Str( nSymPSize() ) ) + ; ", Stack=" + LTrim( Str( nStackSize() ) ) + ; ", Heap=" + LTrim( Str( nHeapSize() ) ) + ")" + CRLF cErrorLog += " PRG Stack: " + ; LTrim( Str( 65535 - ( nStatics() * 14 ) - nInitDSSize() ) ) + ; " bytes" + CRLF #endif #ifdef __CLIPPER__ cErrorLog += " " + LTrim( Str( nStatics() ) ) + " Variáveis Estáticas: " + ; LTrim( Str( nStatics() * 14 ) ) + " bytes" + CRLF + CRLF #else cErrorLog += " " + LTrim( Str( nStatics() ) ) + " Variáveis Estáticas" + ; CRLF + CRLF #endif cErrorLog += " Consumo de Memória Dinâmica:" + CRLF cErrorLog += " Valor Atual: " + Str( MemUsed() ) + " bytes" + CRLF cErrorLog += " Valor Alto: " + Str( MemMax() ) + " bytes" + CRLF // nSymNames() no longer returns a real value! 15/April/97 /* cErrorLog += " SYMBOLS segment" + CRLF cErrorLog += " " + LTrim( Str( nSymNames() ) ) + " SymbolNames: " + ; LTrim( Str( nSymNames() * 16 ) ) + " bytes" */ // Generates a file with an Error Log BEGIN SEQUENCE oOldError = ErrorBlock( { || DoBreak() } ) MemoWrit( "Error.log", cErrorLog ) END SEQUENCE ErrorBlock( oOldError ) DEFINE FONT oFnt NAME "Ms Sans Serif" SIZE 00, -14 BOLD // 350, 300 MUDEI DEFINE DIALOG oDlg SIZE 400, 265 + If( lIsWinNT, 50, 50 ) ; TITLE DLG_TITLE COLORS CLR_BLACK, CLR_WHITE TRANSPARENT oDlg:lHelpIcon := .F. @ 0, 0 SAY oSay PROMPT OemToAnsi( cMessage ) OF oDlg ; FONT oFont SIZE 250, 20 COLORS CLR_BLACK, CLR_WHITE @ 1, 0 SAY "Edite e Envie Por Email o Arq. Error.Log Anote: " ; CENTERED SIZE 175, 20 COLOR CLR_BLACK, CLR_WHITE @ 1.5, 0 SAY "Tel: (11)2941-6446/3569-6446 - Email: contato@pleno.com.br " ; CENTERED SIZE 175, 20 COLOR CLR_BLACK, CLR_WHITE @ 1.9, 2 SAY "Ou joao@pleno.com.br ou marcos@cardim.com.br " ; SIZE 175, 20 COLOR CLR_BLACK, CLR_WHITE oSay:nStyle = nOR( oSay:nStyle, 128 ) // SS_NOPREFIX oSay:nTop = 3 oSay:nLeft = 22 oSay:nBottom = 25 oSay:nRight = 148 @ 37, 6 SAY "Listagem de Erros" OF oDlg FONT oFont PIXEL ; COLORS CLR_BLACK, CLR_WHITE @ 146, 6 SAY "ERRO NA NOTA FISCAL ELETRONICA: "+cVersaoNota OF oDlg ; FONT oFont PIXEL COLORS CLR_BLACK, CLR_WHITE SIZE 150, 11 n = aStack[ 1 ] @ 45, 3 LISTBOX oLbx VAR n ITEMS aStack OF oDlg ; SIZE 195, 79 + If( lIsWinNT, 18, 0 ) PIXEL if nButtons == 1 .or. nButtons == 3 @ 110 + If( lIsWinNT, 24, 24 ), 80 BUTTON oSaida PROMPT("&Saida" ) ; OF oDlg ACTION oDlg:End() SIZE 30, 11 PIXEL FONT oFont DEFAULT else @ 110 + If( lIsWinNT, 24, 24 ), 42 BUTTON oSaida PROMPT("&Saida" ) OF oDlg ; ACTION oDlg:End() SIZE 30, 11 PIXEL FONT oFont endif if e:CanRetry @ 110 + If( lIsWinNT, 24, 24 ), If( nButtons == 2, 82, 13 ) BUTTON "&Repetir" ; OF oDlg ACTION ( lRet := .t., oDlg:End() ) ; SIZE 30, 11 FONT oFont PIXEL endif if e:CanDefault @ 110 + If( lIsWinNT, 24, 24 ), 132 BUTTON "&Padrão" OF oDlg ; ACTION ( lRet := .f., oDlg:End() ) ; SIZE 30, 11 FONT oFont PIXEL endif @ 32, 138 BUTTON oEditar PROMPT "&Editar Error.log " OF oDlg ; FONT oFont PIXEL SIZE 50, 10 ; ACTION WinExec( "Notepad.exe error.log" ) oEditar:cToolTip := OemToAnsi( "Editar o Erro Usando o Bloco de " + ; "Notas Para Enviar Via Email" ) SET FONT OF oSaida TO oFnt ACTIVATE DIALOG oDlg CENTERED ; ON PAINT DrawBitmap( hDC, hLogo, 6, 6 ) oFnt:End() DeleteObject( hLogo ) if lRet == nil .or. ( !LWRunning() .and. lRet ) SET RESOURCES TO ErrorLevel( 1 ) QUIT // must be QUIT !!! endif return lRet //----------------------------------------------------------------------------// static function DoBreak() BREAK return nil //----------------------------------------------------------------------------// static func ErrorMessage( e ) // start error message local cMessage := if( empty( e:OsCode ), ; if( e:severity > ES_WARNING, "Error ", "Warning " ),; "(DOS Error " + NTRIM(e:osCode) + ") " ) // add subsystem name if available cMessage += if( ValType( e:SubSystem ) == "C",; e:SubSystem() ,; "???" ) // add subsystem's error code if available cMessage += if( ValType( e:SubCode ) == "N",; "/" + NTRIM( e:SubCode ) ,; "/???" ) // add error description if available if ( ValType( e:Description ) == "C" ) cMessage += " " + e:Description end // add either filename or operation cMessage += if( ! Empty( e:FileName ),; ": " + e:FileName ,; if( !Empty( e:Operation ),; ": " + e:Operation ,; "" ) ) return cMessage //----------------------------------------------------------------------------// // returns extended info for a certain variable type static function cGetInfo( uVal ) local cType := ValType( uVal ) do case case cType == "C" return '"' + cValToChar( uVal ) + '"' case cType == "O" return "Class: " + uVal:ClassName() case cType == "A" return "Len: " + Str( Len( uVal ), 4 ) otherwise return cValToChar( uVal ) endcase return nil //----------------------------------------------------------------------------// #define HKEY_LOCAL_MACHINE 2147483650 // 0x80000002 function GetCPU() local oReg := TReg32():New( HKEY_LOCAL_MACHINE,; "HARDWARE\DESCRIPTION\System\CentralProcessor\0",; .f. ) local cCpu := oReg:Get( "ProcessorNameString" ) oReg:Close() return cCpu //----------------------------------------------------------------------------// FUNCTION DOSErro( qual ) private FALHA[ 89 ] if qual = 0 .or. qual > 89 qual = 89 endif FALHA[ 1 ] = "Numero de funcao invalida" FALHA[ 2 ] = "ARQUIVO nao encontrado" FALHA[ 3 ] = "Path nao encontrado" FALHA[ 4 ] = "Muitos ARQUIVOs abertos" FALHA[ 5 ] = "Acesso negado" FALHA[ 6 ] = "HANDLE invalido" FALHA[ 7 ] = "Bloco de controle de memoria destruido" FALHA[ 8 ] = "Memoria insuficiente" FALHA[ 9 ] = "Endereco de bloco de memoria invalido" FALHA[ 10 ] = "Dispositivo invalido" FALHA[ 11 ] = "Formatacao invalida" FALHA[ 12 ] = "Codigo de acesso invalido" FALHA[ 13 ] = "Dados invalidos" FALHA[ 14 ] = "Reservado" FALHA[ 15 ] = "Acionador de disco invalido" FALHA[ 16 ] = "Tentou remover do diretorio corrente" FALHA[ 17 ] = "Dispositivo nao e o mesmo" FALHA[ 18 ] = "Nao ha mais ARQUIVO" FALHA[ 19 ] = "Disco protegido contra gravacao" FALHA[ 20 ] = "Unidade de disco desconhecida" FALHA[ 21 ] = "Impossivel leitura de disco" FALHA[ 22 ] = "Comando desconhecido" FALHA[ 23 ] = "Informacao errada" FALHA[ 24 ] = "Comprimento da estrutura esta ruim" FALHA[ 25 ] = "Erro na pesquisa" FALHA[ 26 ] = "Unidade de armazenagem desconhecida" FALHA[ 27 ] = "Setor nao encontrado" FALHA[ 28 ] = "Papel de saida da impressora" FALHA[ 29 ] = "Gravacao invalida" FALHA[ 30 ] = "Leitura invalida" FALHA[ 31 ] = "Falha geral" FALHA[ 32 ] = "Violacao de divisao" FALHA[ 33 ] = "Violacao de bloqueio" FALHA[ 34 ] = "Mudanca de disco invalida" FALHA[ 35 ] = "Tentativa de abrir mais arquivos do que o definido no comando FCBS." FALHA[ 36 ] = "Estouro no buffer de compartilhamento." FALHA[ 37 ] = "Reservado" FALHA[ 38 ] = "Reservado" FALHA[ 39 ] = "Reservado" FALHA[ 40 ] = "Reservado" FALHA[ 41 ] = "Reservado" FALHA[ 42 ] = "Reservado" FALHA[ 43 ] = "Reservado" FALHA[ 44 ] = "Reservado" FALHA[ 45 ] = "Reservado" FALHA[ 46 ] = "Reservado" FALHA[ 47 ] = "Reservado" FALHA[ 48 ] = "Reservado" FALHA[ 49 ] = "Reservado" FALHA[ 50 ] = "Nao suporta rede requerida" FALHA[ 51 ] = "Nao suporta pedido da rede" FALHA[ 52 ] = "Nome da rede duplicado" FALHA[ 53 ] = "Nome da rede nao encontrado" FALHA[ 54 ] = "Rede ocupada." FALHA[ 55 ] = "Dispositivo nao existente na rede" FALHA[ 56 ] = "Limite de comandos da NETBIOS excedido" FALHA[ 57 ] = "Erro no adaptador do hardware da rede" FALHA[ 58 ] = "Resposta da rede incorreta" FALHA[ 59 ] = "Erro inesperado na rede" FALHA[ 60 ] = "Adaptador remoto imcompativel" FALHA[ 61 ] = "Fila de impressao esta cheia" FALHA[ 62 ] = "Fila de impressao esta cheia" FALHA[ 63 ] = "ARQUIVO de impressao eliminado" FALHA[ 64 ] = "Nome da rede eliminado" FALHA[ 65 ] = "Acesso negado" FALHA[ 66 ] = "Incorreto tipo de dispositivo da rede" FALHA[ 67 ] = "Nome da rede nao encontrado" FALHA[ 68 ] = "Limite excedido para o nome da rede" FALHA[ 69 ] = "Limite de sessao do NETBIOS excedido" FALHA[ 70 ] = "Pausa temporaria" FALHA[ 71 ] = "Pedido de rede negado" FALHA[ 72 ] = "Redirecionamento Impressora / disco pausado" FALHA[ 73 ] = "Reservado" FALHA[ 74 ] = "Reservado" FALHA[ 75 ] = "Reservado" FALHA[ 76 ] = "Reservado" FALHA[ 77 ] = "Reservado" FALHA[ 78 ] = "Reservado" FALHA[ 79 ] = "Reservado" FALHA[ 80 ] = "ARQUIVO ja existente" FALHA[ 81 ] = "Reservado" FALHA[ 82 ] = "Impossivel criar diretorio" FALHA[ 83 ] = "Ocorreu falha em INT 24H" FALHA[ 84 ] = "Muitos redirecionamentos" FALHA[ 85 ] = "Redirecionamento duplicado" FALHA[ 86 ] = "Senha invalida" FALHA[ 87 ] = "Parametro invalido" FALHA[ 88 ] = "Defeito no dispositivo da rede" FALHA[ 89 ] = "Nenhum erro ocorrido !" RETURN( ", "+FALHA[ qual ] ) Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 17, 2014 Author Report Share Posted January 17, 2014 Melhorando... Quem melhorar mais, favor postar as alterações. Obg. abs. IF .NOT. EMPTY( e:osCode ) // INCLUIDO EM: 17/01/2014 - Joao //Alert( cMessage + DOSErro(e:osCode) ) MsgStop( OemtoAnsi( "ATEN€ÇO USUµRIO: " )+CRLF+CRLF+ ; ( UPPER( cMessage ) )+CRLF+CRLF+ ; ( DOSErro( e:osCode ) )+CRLF+CRLF+ ; OemToAnsi( "RESOLVA O PROBLEMA NA REDE... " )+CRLF+ ; OemToAnsi( "TECLE <ENTER> PARA CONTINUAR... " ), ; OemToAnsi( "ERRO DE REDE OU NO SEU COMPUTADOR" ) ) QUIT ENDIF FUNCTION DOSERRO( QUAL ) PRIVATE FALHA[ 89 ] IF QUAL = 0 .OR. QUAL > 89 QUAL = 89 ENDIF FALHA[ 1 ] = "NUMERO DE FUNCAO INVALIDA" FALHA[ 2 ] = "ARQUIVO NAO ENCONTRADO" FALHA[ 3 ] = "PATH NAO ENCONTRADO" FALHA[ 4 ] = "MUITOS ARQUIVOS ABERTOS" FALHA[ 5 ] = "ACESSO NEGADO" FALHA[ 6 ] = "HANDLE INVALIDO" FALHA[ 7 ] = "BLOCO DE CONTROLE DE MEMORIA DESTRUIDO" FALHA[ 8 ] = "MEMORIA INSUFICIENTE" FALHA[ 9 ] = "ENDERECO DE BLOCO DE MEMORIA INVALIDO" FALHA[ 10 ] = "DISPOSITIVO INVALIDO" FALHA[ 11 ] = "FORMATACAO INVALIDA" FALHA[ 12 ] = "CODIGO DE ACESSO INVALIDO" FALHA[ 13 ] = "DADOS INVALIDOS" FALHA[ 14 ] = "RESERVADO PARA USO FUTURO 14" FALHA[ 15 ] = "ACIONADOR DE DISCO INVALIDO" FALHA[ 16 ] = "TENTOU REMOVER DO DIRETORIO CORRENTE" FALHA[ 17 ] = "DISPOSITIVO NAO E O MESMO" FALHA[ 18 ] = "NAO HA MAIS ARQUIVO" FALHA[ 19 ] = "DISCO PROTEGIDO CONTRA GRAVACAO" FALHA[ 20 ] = "UNIDADE DE DISCO DESCONHECIDA" FALHA[ 21 ] = "IMPOSSIVEL LEITURA DE DISCO" FALHA[ 22 ] = "COMANDO DESCONHECIDO" FALHA[ 23 ] = "INFORMACAO ERRADA" FALHA[ 24 ] = "COMPRIMENTO DA ESTRUTURA ESTA RUIM" FALHA[ 25 ] = "ERRO NA PESQUISA" FALHA[ 26 ] = "UNIDADE DE ARMAZENAGEM DESCONHECIDA" FALHA[ 27 ] = "SETOR NAO ENCONTRADO" FALHA[ 28 ] = "PAPEL DE SAIDA DA IMPRESSORA" FALHA[ 29 ] = "GRAVACAO INVALIDA" FALHA[ 30 ] = "LEITURA INVALIDA" FALHA[ 31 ] = "FALHA GERAL" FALHA[ 32 ] = "VIOLACAO DE DIVISAO" FALHA[ 33 ] = "VIOLACAO DE BLOQUEIO" FALHA[ 34 ] = "MUDANCA DE DISCO INVALIDA" FALHA[ 35 ] = "TENTATIVA DE ABRIR MAIS ARQUIVOS DO QUE O DEFINIDO NO COMANDO FCBS." FALHA[ 36 ] = "ESTOURO NO BUFFER DE COMPARTILHAMENTO." FALHA[ 37 ] = "RESERVADO PARA USO FUTURO 37" FALHA[ 38 ] = "RESERVADO PARA USO FUTURO 38" FALHA[ 39 ] = "RESERVADO PARA USO FUTURO 39" FALHA[ 40 ] = "RESERVADO PARA USO FUTURO 40" FALHA[ 41 ] = "RESERVADO PARA USO FUTURO 41" FALHA[ 42 ] = "RESERVADO PARA USO FUTURO 42" FALHA[ 43 ] = "RESERVADO PARA USO FUTURO 43" FALHA[ 44 ] = "RESERVADO PARA USO FUTURO 44" FALHA[ 45 ] = "RESERVADO PARA USO FUTURO 45" FALHA[ 46 ] = "RESERVADO PARA USO FUTURO 46" FALHA[ 47 ] = "RESERVADO PARA USO FUTURO 47" FALHA[ 48 ] = "RESERVADO PARA USO FUTURO 48" FALHA[ 49 ] = "RESERVADO PARA USO FUTURO 49" FALHA[ 50 ] = "NAO SUPORTA REDE REQUERIDA" FALHA[ 51 ] = "NAO SUPORTA PEDIDO DA REDE" FALHA[ 52 ] = "NOME DA REDE DUPLICADO" FALHA[ 53 ] = "NOME DA REDE NAO ENCONTRADO" FALHA[ 54 ] = "REDE OCUPADA." FALHA[ 55 ] = "DISPOSITIVO NAO EXISTENTE NA REDE" FALHA[ 56 ] = "LIMITE DE COMANDOS DA NETBIOS EXCEDIDO" FALHA[ 57 ] = "ERRO NO ADAPTADOR DO HARDWARE DA REDE" FALHA[ 58 ] = "RESPOSTA DA REDE INCORRETA" FALHA[ 59 ] = "ERRO INESPERADO NA REDE" FALHA[ 60 ] = "ADAPTADOR REMOTO IMCOMPATIVEL" FALHA[ 61 ] = "FILA DE IMPRESSAO ESTA CHEIA" FALHA[ 62 ] = "FILA DE IMPRESSAO ESTA CHEIA" FALHA[ 63 ] = "ARQUIVO DE IMPRESSAO ELIMINADO" FALHA[ 64 ] = "NOME DA REDE ELIMINADO" FALHA[ 65 ] = "ACESSO NEGADO" FALHA[ 66 ] = "INCORRETO TIPO DE DISPOSITIVO DA REDE" FALHA[ 67 ] = "NOME DA REDE NAO ENCONTRADO" FALHA[ 68 ] = "LIMITE EXCEDIDO PARA O NOME DA REDE" FALHA[ 69 ] = "LIMITE DE SESSAO DO NETBIOS EXCEDIDO" FALHA[ 70 ] = "PAUSA TEMPORARIA" FALHA[ 71 ] = "PEDIDO DE REDE NEGADO" FALHA[ 72 ] = "REDIRECIONAMENTO IMPRESSORA / DISCO PAUSADO" FALHA[ 73 ] = "RESERVADO PARA USO FUTURO 73" FALHA[ 74 ] = "RESERVADO PARA USO FUTURO 74" FALHA[ 75 ] = "RESERVADO PARA USO FUTURO 75" FALHA[ 76 ] = "RESERVADO PARA USO FUTURO 76" FALHA[ 77 ] = "RESERVADO PARA USO FUTURO 77" FALHA[ 78 ] = "RESERVADO PARA USO FUTURO 78" FALHA[ 79 ] = "RESERVADO PARA USO FUTURO 79" FALHA[ 80 ] = "ARQUIVO JA EXISTENTE" FALHA[ 81 ] = "RESERVADO PARA USO FUTURO 81" FALHA[ 82 ] = "IMPOSSIVEL CRIAR DIRETORIO" FALHA[ 83 ] = "OCORREU FALHA EM INT 24H" FALHA[ 84 ] = "MUITOS REDIRECIONAMENTOS" FALHA[ 85 ] = "REDIRECIONAMENTO DUPLICADO" FALHA[ 86 ] = "SENHA INVALIDA" FALHA[ 87 ] = "PARAMETRO INVALIDO" FALHA[ 88 ] = "DEFEITO NO DISPOSITIVO DA REDE" FALHA[ 89 ] = "NENHUM ERRO OCORRIDO !" RETURN( "FALHA: " + FALHA[ QUAL ] ) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.