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?

Moderador: Moderadores
BEGIN SEQUENCE
SuaMain()
RECOVER
WriteErrorLog() // A CallStack
END SEQUENCE
FUNCTION Main()
BEGIN SEQUENCE
SuaAntigaMain()
BREAK
RECOVER
MostrarCallStack()
END SEQUENCE
MostrarCallStack()
...
SET PATH=????
SET HB_INSTALL_PREFIX=?????
Quando desvio com o begin sequence, dá tudo certo.
#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
...
No windows:
SET PATH=????
SET HB_INSTALL_PREFIX=?????
endsequence
ErrorBlock( bError )
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.
//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
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.
Usuários vendo este fórum: Nenhum usuário registrado online e 11 visitantes