Clipper On Line • Ver Tópico - Rotina de ErrorLog

Rotina de ErrorLog

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Rotina de ErrorLog

Mensagempor JoséQuintas » 08 Abr 2017 19:05

Não lembro aonde vi algo sobre xharbour....

Já que está com problemas, o negócio seria aproveitar e usar uma versão do Harbour atual.

Afinal, que versão está usando?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Rotina de ErrorLog

Mensagempor cjp » 08 Abr 2017 19:10

Uso a 3.2. Tentei mudar para a 3.4, mas não funcionou.

De onde posso baixar a versão mais atual?

Sim, fui eu que falei errado em xHarbour.
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

Rotina de ErrorLog

Mensagempor JoséQuintas » 08 Abr 2017 20:31

Podemos definir o mundo Harbour como sendo 3 versões:

- Harbour 3.2
- Harbour 3.4
- xHarbour

Usa mingw?
Se usar mingw mais fácil, só baixar e usar.
Correção: depende se usa algum extra, e é possivel que o MySql seja um extra.

Nesta página: https://sourceforge.net/projects/harbour-project/files/binaries-windows/nightly/

Detalhe:
Depende do quão antiga é sua versão, ou se misturou alguma coisa. Faz um bom tempo que o Harbour 3.2 funciona perfeito.
Não uso nenhum extra, então não vou saber dizer como criar os extras.

Quando usa extras, não sei se o MySQL é um deles, é necessário:

- Baixar o componente adicional, que contém a DLL e arquivos #include pra C (.H)
- Gerar uma LIB pra acesso a essa DLL e/ou o componente extra direcionado pra exatamente essa DLL

É por isso que trocar de Harbour pode ser complicado: tem que lembrar o que adicionou de extra, e adicionar novamente, compatível com o novo.
Se obteve de alguém... tente obter desse alguém de novo, caso não consiga resolver.

E se quebrar a cabeça pra resolver, já anote o que fez, pra da próxima vez ser mais fácil.

Como eu não uso extras, apenas baixo os fontes do Harbour e gero. (Harbour 3.4).
Pra isso so precisa o compilador C e nada mais.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Rotina de ErrorLog

Mensagempor cjp » 09 Abr 2017 00:09

Não uso Minigui.

No link que vc passou tem 3 arquivos, correto? Um txt, um .exe, que parece que é o da minigui, e um .zip, que parece que é o harbour 3.2, correto?

Baixei este último, salvei em uma pasta diferente da que eu estava usando, e compilei com ele, sem a minha errorsys, e continua o mesmo problema: fecha direto, sem entrar na errorsys do Harbour.
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

Rotina de ErrorLog

Mensagempor JoséQuintas » 09 Abr 2017 00:24

No Harbour 3.2 é obrigatório configurar:

SET HB_INSTALL_PREFIX=pasta do harbour

Fez isso?

Lembrando que em SET PATH é pra deixar o Harbour que instalou agora, e retirar os outros.

Depois disso, só restam seus fontes mesmo.... rs
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Rotina de ErrorLog

Mensagempor JoséQuintas » 09 Abr 2017 00:29

Não sei se dá certo, colocar todo seu aplicativo dentro de uma errorsys, pra descobrir aonde sai.

BEGIN SEQUENCE
   SuaMain()
RECOVER
   WriteErrorLog() // A CallStack
END SEQUENCE


A intenção seria gravar em que ponto saiu.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Rotina de ErrorLog

Mensagempor cjp » 09 Abr 2017 00:43

Não fiz não. Desculpe a ignorância, mas onde configura esses SETs?

Tentei colocar a main() dentro de um begin sequence, mas não compila.

De qualquer forma, acho que não funcionaria. Afinal, como vc mesmo disse, a begin sequence desvia da errorsys, correto? Então, ele vai apontar onde está o erro que estou provocando. Mas a questão não é essa. O problema é que não está entrando na errorsys e fechando direto. Quando desvio com o begin sequence, dá tudo certo.
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

Rotina de ErrorLog

Mensagempor JoséQuintas » 09 Abr 2017 02:53

Não é simplesmente colocar a Main em begin sequence.

Seria algo como:

FUNCTION Main()

   BEGIN SEQUENCE
      SuaAntigaMain()
      BREAK
   RECOVER
      MostrarCallStack()
   END SEQUENCE
   MostrarCallStack()
...


mingw não é minigui. mingw é o compilador C padrão.

No windows:
SET PATH=????
SET HB_INSTALL_PREFIX=?????


Quando desvio com o begin sequence, dá tudo certo.


Por acaso está retornando direito a errorsys anterior no final?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Rotina de ErrorLog

Mensagempor cjp » 10 Abr 2017 00:31

Realmente foi burrice minha.

Mas agora fiz assim:

#require "rddsql"
#require "sddodbc"
#include "dbinfo.ch"
   
//   REQUEST SQLMIX, SDDODBC, DBFNTX
#include "inkey.ch"
#include "hbgtinfo.ch"
//         #include "dbinfo.ch"
         #define RDDI_CONNECT     1001
         #define RDDI_DISCONNECT   1002
         #define RDDI_EXECUTE     1003
         REQUEST SQLMIX, SDDODBC, DBFNTX
         ANNOUNCE RDDSYS

REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850

PROCEDURE Main
          bError := ErrorBlock( {|e| Break(e) } )
          begin sequence
                agenda()
          recover using e
                  cMessage := ErrorMessage(e)
                  logerro()
                  mandmail1("error.log","Erro na função agenda contornado com o recover do begin sequence")
          endsequence
          ErrorBlock( bError )
return

function agenda
...


Assim imagino que era pra funcionar, mas estranhamente, está fechando direto.

Desculpe, mas esta parte eu ainda não entendi:

No windows:
SET PATH=????
SET HB_INSTALL_PREFIX=?????


Sempre retorno assim, veja se está certo:

          endsequence
          ErrorBlock( bError )


Tá certo?
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

Rotina de ErrorLog

Mensagempor JoséQuintas » 10 Abr 2017 17:16

O Harbour 3.2 tem um bug, ele usa o SET HB_INSTALL_PREFIX também na compilação, e deveria ser somente na geração.

De nada adianta configurar o PATH, se não ajustar também SET_HB_INSTALL_PREFIX, variável de ambiente do Windows.

O que acontece com sua função quando dá erro no fonte dela, ou não consegue enviar email?
Sai do sistema?

Olhou a hb_out.log?
Isso é log de erros do HARBOUR, não da errorsys.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Rotina de ErrorLog

Mensagempor cjp » 14 Abr 2017 21:53

O que eu não entendi foi como fazer isso na prática? Seria colocar no .hbp? No .bat?

O programa fecha direto, não dá qualquer erro. Não cria o log de erro, não tem arquivo hb_out.log.
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

Rotina de ErrorLog

Mensagempor JoséQuintas » 14 Abr 2017 23:27

O que eu não entendi foi como fazer isso na prática? Seria colocar no .hbp? No .bat?


não ajustar também SET_HB_INSTALL_PREFIX, variável de ambiente do Windows.


Se é no Windows, não pode ser no HBP. Ou no BAT ou no Windows.

Acabei de passar por um problema parecido, mas pelo menos aparecia na tela.
É essa merd. de mania dessas bost. de GUIs inventarem errorsys, ou modificarem até o comportamento padrão do Harbour.
Foi com HWGUI.

Resolvi de forma radical:
Já que essas bost. modificam a apresentação em tela do Harbour, removi qualquer uso de tela da errorsys.
Agora é somente o bloco de notas e nada mais.

   //DO WHILE ( nChoice == 0 )
   //   IF ( Empty(e:osCode) )
   //      nChoice := Alert( cMessage, aOptions )
   //   ELSE
   //      nChoice := Alert( cMessage + ";(DOS Error " + Ltrim( Str( e:OsCode ) ) + ")", aOptions )
   //   ENDIF
   //   IF ( nChoice == NIL )
   //      EXIT
   //   ENDIF
   //ENDDO
   //
   //IF ! Empty( nChoice )
   //   // do as instructed
   //   IF ( aOptions[ nChoice ] == "Break" )
   //      Break(e)
   //   ELSEIF ( aOptions[ nChoice ] == "Retry" )
   //      RETURN (.T.)
   //   ELSEIF ( aOptions[ nChoice ] == "Default" )
   //      RETURN (.F.)
   //   ENDIF
   //ENDIF



Called from (b)ERRORSYS(17)
Called from TESTHWGUI(37)
Called from (b)MAIN(8)

Error BASE/1003 Variable does not exist: CODIGO
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Rotina de ErrorLog

Mensagempor cjp » 23 Abr 2017 01:33

Eu realmente não sei mais o que fazer para resolver isso. Acho que vou ter que desistir.

Por favor, só me responda mais uma coisa, que eu já tinha perguntado acima: como vc faz a atualização do sistema no computador dos teus usuários? Como envia o arquivo de atualização? Manda compactado? Manda o próprio EXE?
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

Rotina de ErrorLog

Mensagempor JoséQuintas » 23 Abr 2017 12:38

Já respondi antes.

Minha atualizacão é simples: baixo o EXE com um nome temporário, testo tamanho/crc32, se tudo ok, renomeio pra EXE pra entrar no lugar do outro.
É assim desde os tempos do Clipper.


Quanto à errorsys....
Se retirou as mexidas da errorsys, não usa nenhuma lib gráfica....
Se tem certeza que ajustou TODOS os fontes envolvidos, de todas as pastas (pode ser que estão separados e só olhou uma pasta)...
De diferente só resta esse uso de MySQL, mas muita gente usa assim, então tente se informar porque senão a mudança vai ser radical nos fontes pra mudar isso.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Rotina de ErrorLog

Mensagempor cjp » 23 Abr 2017 23:59

O que ainda não entendi é como vc baixa? Por ftp? Se não, de onde baixa? Como faz para baixar?

E como vc consegue renomear o EXE com o programa em execução?

Quanto à errorsys, já testei com a errorsys do Harbour. Não uso nenhuma lib gráfica. Não sei mais o que fazer. O que mais me intriga é esse erro método não exportado: SEVERITY, que, até onde sei, é problema do Harbour, não é da minha aplicação.
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

Anterior Próximo



Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 11 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro