Página 1 de 1
erro na execucao apos compilar Harbour
Enviado: 25 Fev 2011 17:06
por Amparo
Ola amigos
estou tentando converter meu sistema feito em clipper 5.3 para Minigui/Harbour so que no modo console, depois de bater a cabeça consegui compilar e linkar sem erro, so que na hora de executar aparece um erro que ainda nao consegui identificar.
quando executo meu programa a tela de erro é a seguinte:
Erro DBCMD/1015 Argument error: RDDSETDEFAULT
Erro DOS não disponível
Sair Gravar
ai escolho gravar o erro entao me gera o arquivo hb_out.log contendo as seguintes linhas
Application Internal Error - C:\Highstil\SIGEMP.EXE
Terminated at: 2011.02.25 17:50:35
Unrecoverable error 9003: Too many recursive error handler calls
Called from DEFERROR(138) in ERRORSYS.PRG
Called from (b)ERRORSYS(62) in ERRORSYS.PRG
Called from DEFERROR(138) in ERRORSYS.PRG
Called from (b)ERRORSYS(62) in ERRORSYS.PRG
Called from DEFERROR(138) in ERRORSYS.PRG
Called from (b)ERRORSYS(62) in ERRORSYS.PRG
Called from DEFERROR(138) in ERRORSYS.PRG
Called from (b)ERRORSYS(62) in ERRORSYS.PRG
Called from DEFERROR(138) in ERRORSYS.PRG
Called from (b)ERRORSYS(62) in ERRORSYS.PRG
Called from DEFERROR(138) in ERRORSYS.PRG
Called from (b)ERRORSYS(62) in ERRORSYS.PRG
Called from DEFERROR(138) in ERRORSYS.PRG
Called from (b)ERRORSYS(62) in ERRORSYS.PRG
Called from ERRORFILE(304) in ERRORSYS.PRG
Called from DEFERROR(184) in ERRORSYS.PRG
Called from (b)ERRORSYS(62) in ERRORSYS.PRG
Called from RDDSETDEFAULT(0)
Called from MAIN(81) in MAIN.PRG
------------------------------------------------------------------------
na linha 138 DEFERROR tenho a seguinte instrução
U_SERS->( DBGoTo( aUser[ US__RECNO ] ) )
se alguem tiver uma luz
Re: erro na execucao apos compilar Harbour
Enviado: 25 Fev 2011 17:46
por alxsts
Olá!
Verifique a sintaxe do comando que está emitindo. O correto é:
Re: erro na execucao apos compilar Harbour
Enviado: 25 Fev 2011 18:04
por Amparo
ola,
a sintaxe esta assim:
RDDSetDefault( "DBFCDX" )
abraços
Re: erro na execucao apos compilar Harbour
Enviado: 25 Fev 2011 18:53
por alxsts
Olá!
Existem passos que precisam ser seguidos e você não postou o código com problema. Para conseguir configurar um RDD como
default você precisa tê-lo disponível:
Está fazendo o Request?
Poste o teu código. Use a Tag Code, presente na barra de ferramentas da janela "Postar uma resposta"
Re: erro na execucao apos compilar Harbour
Enviado: 25 Fev 2011 20:14
por Amparo
sim estou ...
Código: Selecionar todos
#include "SISTEMA.CH"
#include "FILEIO.CH"
#include "STATION.CH"
REQUEST DESCEND
REQUEST DBFCDX
//REQUEST DBFNTX
**************
FUNCTION Main( cComm )
**************
LOCAL cSysfiles := ""
LOCAL lReindex := .F. // modo reindexacao automatica
LOCAL nCurUser := 0
PUBLIC lAdmin // modo Admin
PUBLIC lCash // modo Caixa
PUBLIC lPos // modo PDV
PUBLIC aSystem
PUBLIC aUser
PUBLIC aColor
PUBLIC aCodes
PUBLIC aMessages
PUBLIC aStation
PUBLIC oMenuPri
PUBLIC nListRec // Recno em listas de pesquisa
PUBLIC nIFHandle // Handle da impressora fiscal
PUBLIC nAuditRec
PUBLIC lIsNT
PUBLIC nBranch
PUBLIC lBranch
PUBLIC cBranch
SetCursor(0)
@ Row(), Col() SAY "Iniciando o sistema BIS..."
nIFHandle := 0
nAuditRec := 0
lAdmin := .T.
lCash := .F.
lPos := .F.
lIsNT := .F. //HARBOUR OL_IsNT()
nBranch := 0
lBranch := .F.
cBranch := ""
cSysFiles := Upper( AllTrim( GetEnv( "BISFILES" ) ) )
IF !Empty( cSysFiles )
IF Right( cSysFiles, 1 ) <> "\"
cSysFiles += "\"
ENDIF
ELSE
cSysFiles := DiskName() + ":\" + CurDir() + "\"
ENDIF
AltD(0)
IF ValType( cComm ) == "C"
cComm := AllTrim( Upper( cComm ) )
IF At( "DEBUG", cComm ) <> 0
AltD(1)
ENDIF
lReindex := ( At( "REINDEX", cComm ) <> 0 )
ENDIF
RDDSetDefault( "DBFCDX" )
aqui apresenta o erro cfe abaixo:
Código: Selecionar todos
───────────────────────────────────────────────┐
Erro DBCMD/2001 Workarea not in use: DBGOTOP │
Erro DOS não disponível │
│
Sair Gravar │
───────────────────────────────────────────────┘
o erro acima fala que a DBF nao esta aberto, mas o arquivo hb_out.log mostra o seguinte erro:
Application Internal Error - C:\Highstil\SIGEMP.EXE
Terminated at: 2011.02.25 21:05:57
Unrecoverable error 9003: Too many recursive error handler calls
Called from DEFERROR(138) in ERRORSYS.PRG
Called from (b)ERRORSYS(62) in ERRORSYS.PRG
Called from DEFERROR(138) in ERRORSYS.PRG
Called from (b)ERRORSYS(62) in ERRORSYS.PRG
Called from DEFERROR(138) in ERRORSYS.PRG
Called from (b)ERRORSYS(62) in ERRORSYS.PRG
Called from DEFERROR(138) in ERRORSYS.PRG
Called from (b)ERRORSYS(62) in ERRORSYS.PRG
Called from DEFERROR(138) in ERRORSYS.PRG
Called from (b)ERRORSYS(62) in ERRORSYS.PRG
Called from DEFERROR(138) in ERRORSYS.PRG
Called from (b)ERRORSYS(62) in ERRORSYS.PRG
Called from DEFERROR(138) in ERRORSYS.PRG
Called from (b)ERRORSYS(62) in ERRORSYS.PRG
Called from ERRORFILE(304) in ERRORSYS.PRG
Called from DEFERROR(184) in ERRORSYS.PRG
Called from (b)ERRORSYS(62) in ERRORSYS.PRG
Called from DBGOTOP(0)
Called from SYSFILES(54) in SYSFILES.PRG
Called from MAIN(111) in MAIN.PRG
a linha do erro DEFERROR(138) in ERRORSYS.prg refere-se a
U_SERS->( DBGoTo( aUser[ US__RECNO ] ) )
não consegui identificar onde esta errado, este fontes eu compilo no clipper 5.3 e roda normal estou tentando passar para MINIGUI/HARBOUR no modo console por que li alguns POST que no Harbour nao existe limitação de vetores, arquivos abertos etc etc.
to batalhando ainda num desisti...
Re: erro na execucao apos compilar Harbour
Enviado: 25 Fev 2011 20:54
por Amparo
fazendo alguns teste percebi que o erro esta dando em uma seguinte situacao
abro o arquivo e logo depois aplico a linha abaixo e da erro
( aLocal[i,1] )->( DBGoTop() )
nao esta assumindo a abertura do arquivo eu faço da forma abaixo esta errado?
Código: Selecionar todos
LOCAL i := 0
LOCAL nWait := 10
LOCAL aLocal := Array(14)
aLocal[ 1] := { "A_UDIT.SYS", .F. }
aLocal[ 2] := { "F_IELDS.SYS", .T. }
aLocal[ 3] := { "F_ILES.SYS", .T. }
aLocal[ 4] := { "F_ORMS.SYS", .T. }
aLocal[ 5] := { "M_ENUS.SYS", .T. }
aLocal[ 6] := { "M_ESSAGE.SYS", .T. }
aLocal[ 7] := { "O_PTIONS.SYS", .T. }
aLocal[ 8] := { "P_RINTER.SYS", .T. }
aLocal[ 9] := { "R_EPORTS.SYS", .F. }
aLocal[10] := { "S_TATION.SYS", .F. }
aLocal[11] := { "S_YSTEM.SYS", .F. }
aLocal[12] := { "T_ABLES.SYS", .F. }
aLocal[13] := { "U_SERS.SYS", .F. }
aLocal[14] := { "B_RANCH.SYS", .T. }
// Open system files...
FOR i := 1 TO 14 STEP 1
nWait := 10
DO WHILE ( nWait > 0 )
DBUseArea( .T.,;
"DBFCDX",;
cDir + aLocal[i,1],;
Substr( aLocal[i,1], 1, At( ".", aLocal[i,1] ) - 1 ),;
.T.,;
aLocal[i,2] )
IF !NetErr()
( aLocal[i,1] )->( DBGoTop() ) // O ERRO ACONTECE AQUI
EXIT
ENDIF
InKey(1)
--nWait
IF nWait = 0
RETURN .F.
ENDIF
ENDDO
NEXT i
Re: erro na execucao apos compilar Harbour
Enviado: 25 Fev 2011 21:13
por Amparo
Ola,
consegui resolver o problema da seguinte forma:
( aLocal[i,1] )->( DBGoTop() ) troquei esta linha pela linha abaixo ai funcionou
(ALIAS( aLocal[i,1]) )->( DBGoTop() )
nao sei se é o certo mais funcionou, e se for assim vou ter um trabalho danado pois em varios pontos do meu prg uso alguma do tipo
( variavel )->( dbgotop() )
( variavel )->( dbskip() )
(variavel )->( dbseek() ) e por ai vai
Re: erro na execucao apos compilar Harbour
Enviado: 25 Fev 2011 23:33
por alxsts
Olá!
Na linha onde ocorre o erro, o alias gerado vem com a extensão .SYS junto.
Esse é o problema. No teu caso, o certo seria:
Código: Selecionar todos
( Substr( aLocal[i,1], 1, At( ".", aLocal[i,1] ) - 1 ) )->( DbGoTop() )
.
Não sei qual é a necessidade mas, achei complicado. Acho que deverias simplificar um pouco a tua vida...
Re: erro na execucao apos compilar Harbour
Enviado: 26 Fev 2011 16:22
por Amparo
ola,
problema resolvido, criei o terceiro elemento com o nome da alias
Código: Selecionar todos
aLocal[ 1] := { "A_UDIT.SYS", .F., "A_UDIT" }
e mudei a linha para
( aLocal[i,3] )->( DBGoTop() )