Página 1 de 1

Erro estranho - cria arquivo BBALBLFG

Enviado: 28 Mai 2008 17:44
por JLF
Amigos tentei ativar um programa que estava engavetado mais ou menos 1 ano, até lá funcionava direitinho.

Ao tentar rodar em 2 máquinas deu um erro bem esquisito, certamente problemas com a versão do XP e "excesso" de memória.

Ai fui tentar rodar numa máquina antiga, pelo prompt, e ai pelo menos tentou carregar o programa e apareceu assim:

C:windows\system32\emm386.exe
<b>Geratxt <26> UNRECOVERABLE error 5311: Cannot create VM swap file

Só entendi o Geratxt que é o nome do programa..rssss

Ele gera o NTX e cria um arquivo com esse nome estranho ai, segue ele em anexo e tem o texto do programa abaixo na outra msg de hoje 29/05.

Alguma LUZ ?

Abraços!

Re: Erro estranho

Enviado: 28 Mai 2008 20:06
por Pablo César
Esse erro creio eu, que deve-se ao fato do GERATXT.EXE não poder criar arquivo de SWAP (arquivo que auxilia a memória). Re-compile o seu aplicativo, desta vez sem opção de direcionamento do SWAP, compile de forma normal, simples. Ou então crie o diretório em que é feito o SWAP, também dê direitos de escrita para essa pasta.

Re: Erro estranho

Enviado: 29 Mai 2008 08:30
por JLF
Paulo,

Vou tentar recompilar, na mesma máquina que deu esta msg, o estranho é que ano passado rodava...

Também vou dar uma configurada na máquina que uso atualmente, pra rodar o clipper, XP PRO SP2, 2G, Dual Core

Na instalação do Clipper53 na máquina não gerou os sub-diretórios OBJ e PLL, pode ficar assim, ou crio as pastas e pego os .OBJ e .PLL que ficaram no c:clipper5 e transfiro para elas ? :-o

Veja o script do programa.

***********
* GERATXT.PRG
* Gera o arquivo Texto dos lançamentos a serem lidos pelo CONTMATIC
* JLF - 31/05/2007
***********
* GeraTxt()
***********

#include "box.ch"
#include "inkey.ch"
#include "setcurs.ch"
#include "sos.ch"

FUNCTION GeraTxt()

SET SCOREBOARD OFF
SET DATE BRIT
SET CENTURY ON
SET CONFIRM ON
SET WRAP ON

USE impcont
INDEX ON C06 TO dat1
SET INDEX TO dat1

PRIVATE ficMsg, fidDmsl,fidDms2
@ 04,01 CLEAR TO 21,78
@ 23,01 CLEAR TO 23,63
@ 05,31 SAY "Gravar listagem dos Lancamentos"
GO TOP
IF EOF()
@ 23,01 CLEAR TO 23,78
@ 23,10 SAY "Operacao cancelada, pois nao ha registros no banco de dados"
TONE(300,0.02)
TONE(500,0.02)
CLEAR TYPEAHEAD
INKEY(0)
RETURN NIL
ENDIF
**************************************************************
* Seleciona o periodo
*
ficMsg:=SPACE(2)
fidDms1:=CTOD(SPACE(8))
fidDms2:=CTOD(SPACE(8))
cJan:=SAVESCREEN(10,10,16,70)
SETCOLOR("w+/gr")
@ 10,10,16,70 BOX B_DOUBLE+SPACE(1)
@ 12,10 SAY JSD_ESQUERDA
@ 12,70 SAY JSD_DIREITA
@ 12,11,12,69 BOX B_SINGLE
@ 11,28 SAY "Parametros de Selecao"
@ 14,18 SAY "Data dos Lancamentos:"+SPACE(12)+"a"
@ 14,40 GET fidDms1
@ 14,53 GET fidDms2 VALID (fidDms2>=fidDms1)
CLEAR TYPEAHEAD
SETCURSOR(SC_NORMAL)
READ
SETCURSOR(SC_NONE)
ficMsg:=ALLTRIM(ficMsg)
IF LASTKEY()<>K_ESC

DO CASE
CASE !EMPTY(ficMsg) .AND. !EMPTY(fidDms1) .AND. !EMPTY(fidDms2)
SET FILTER TO ficMsg $ codmsg .AND. C06 >= fidDms1 .AND. C06 <= fidDms2
CASE !EMPTY(ficMsg) .AND. EMPTY(fidDns1) .and. EMPTY(fidDms2)
SET FILTER TO ficMsg $ codmsg
CASE EMPTY(ficMsg) .AND. !EMPTY(fidDms1) .AND. !EMPTY(fidDms2)
SET FILTER TO C06 >= fidDms1 .AND. C06 <= fidDms2
OTHERWISE
SET FILTER TO
ENDCASE
GO TOP
ENDIF
SETCOLOR("w+/2>g")
RESTSCREEN(10,10,16,70,cJan)
********************************************************************
IF LASTKEY()=K_ESC
RETURN NIL
ENDIF
IF EOF()
@ 23,01 CLEAR TO 23,78
@ 23,05 SAY "Selecao liberada, pois nao existe registro que satisfaca esta selecao"
TONE(300,0.02)
TONE(500,0.02)
CLEAR TYPEAHEAD
INKEY(0)
SET FILTER TO
GO TOP
ENDIF
@ 23,01 CLEAR TO 23,78
@ 23,64 SAY "[ESC] Abandona"
SETCOLOR("w+/gr")
@ 10,18,14,61 BOX B_DOUBLE+SPACE(1)
@ 12,20 SAY "Confirma a geracao do arquivo ? [ENTER]"

DO WHILE .T.
CLEAR TYPEAHEAD
INKEY(0)
DO CASE
CASE LASTKEY() =K_ENTER
SETCOLOR("w+/bg")
@ 23,01 CLEAR TO 23,78
SETCOLOR("w+/gr")
@ 12,19 CLEAR TO 12,60
@ 12,34 SAY "Gerando..."
SET CONSOLE OFF
SET PRINT ON

**************************************************************
* Cria o arquivo em formato TXT
*-----
fidDms3:=DTOC(C06)
vMes :=SUBSTR(fidDms3,4,2)
*-----
vEmp :="FI004004."

Set Date Brit
private hArquivo,;
arq :=STUFF(vEmp,10,0,vMes)
hArquivo := fCreate(arq,0)
If hArquivo = -1
Alert('Erro na criacao do arquivo')
Return NIL
Endif


SET DEVICE TO PRINTER
SET PRINT TO &arq

* --- Inicio da pagina
cLinha := 0
DO WHILE !EOF()

* --- Linhas de detalhe do relatorio

@ cLinha,000 SAY c01
@ cLinha,005 SAY c02
@ cLinha,023 SAY c03
@ cLinha,041 SAY c04
@ cLinha,046 SAY strzero(c05*100,12,0)
@ cLinha,058 SAY C06
@ cLinha,068 SAY c07
@ cLinha,074 SAY c08
@ cLinha,180 SAY c09
@ cLinha,215 SAY c10
@ cLinha,217 SAY c11
@ cLinha,237 SAY c12
@ cLinha,257 SAY c13
@ cLinha,277 SAY strzero(c14*100,15,0)
@ cLinha,292 SAY c15
@ cLinha,312 SAY strzero(c16*100,15,0)
cLinha = cLinha + 1
SKIP
ENDDO

* ------------ final --------------------

fClose(hArquivo)
SET PRINTER OFF
SET CONSOLE ON
EXIT
CASE LASTKEY()=K_ESC
EXIT
OTHERWISE
TONE(300,0.02)
TONE(500,0.02)
ENDCASE
ENDDO
SET FILTER TO
GO TOP
SETCOLOR("w+/bg")

RETURN NIL

Re: Erro estranho - cria arquivo BBALBLFG

Enviado: 29 Mai 2008 12:02
por JLF
Agora encuquei de vez...

Peguei o DBF vazio, que tinha mandado pro cliente, cadastrei lançamentos, rodei o GERATXT e funcionou perfeito...

Olhei a conteudo do DBF "novo" e comparei com o que veio do cliente, e não consegui ainda encontrar divergencias, pensei logo no formato das datas, mas estão identicos, será que tem algum registro "baleado" no meio do DBF que veio do cliente :|<

Estão vendo, estou tão confuso que fui olhar o DBF, pô se não ta abrindo a tela do GERATXT o que tem haver ... :% ou será que tem ? copiei o DBF do cliente onde fiz o teste e não é deu o mesmo problema chamou a janela do DOS o cursor fica piscando mas não carregou a tela e gerou o tal esquisito, agora com nome de AMBBDHBP

O DBF do cliente esta só com 1069 registros e 335KB.

Mestres uma LUZ !

Re: Erro estranho - cria arquivo BBALBLFG

Enviado: 29 Mai 2008 12:42
por Pablo César
JLF escreveu:gerou o tal esquisito, agora com nome de AMBBDHBP
Este é um arquivo temporário que o Clipper cria quando não dispõe de memória suficiente.

Eu não compilei o seu aplicativo, porque existem directivas que desconheço. Apesar da dificuldade de entender o seu código ( por não estar entre [ code ] e [ /code ] ) dá para ver claramente que você possui alguns INKEY(0) que na minha opinião são desnecessários. Em sintese, o seu aplicativo geraria um arquivo TXT conforme um perído de datas e você está utilizando o SET FILTER.

1. Eu nunca gostei de usar o SET FILTER, porque torna tudo mais lento.
2. Preferiria INDEXAR o arquivo por DATA e abolir o uso do SET FILTER.
3. Daí então fica fácil utilizar dentro do DO WHILE implementar as condições (us de IF ou DO CASE) para inicio e fim de data
4. Outra coisa: Por quê você está utilizando o FCREATE e SET PRINTER TO <arq>, se é questão de saber se teve sucesso a cração, é só verificar com IF FILE(arq) após fechar o SET PRINTER TO

Você re-compilou esse aplicativo ?. Aconselho a refazer essa rotina de criação. Não use SET FILTER, use a INDEXAÇÃO (se o arquivo for grande, se for pequeno nem precisa).

Re: Erro estranho - cria arquivo BBALBLFG

Enviado: 29 Mai 2008 13:35
por JLF
Pablo,

Não recompilei, porque quando configurei a maquina aqui , simplesmente copiei os arquivos, fiz uma simulação e gerei o TXT perfeitamente...

Inclusive no teste cadastrei varios lançamentos com datas diferentes e gerou todos perfeitamente.

Pra ser sincero, nem lembro mais a rotina usada sei que no teste gerou o TXT de acordo com o layout para importação no programa de contabilidade que uso.

Inclusive o nome do arquivo obedece uma rotina que é FI004004.(aqui entra o mês)

FI004004.01 (mes de Janeiro)
FI004004.02 (fevereiro) ...

Me intrigou agora o porque abre o programa quando coloco o DBF novo e não chega a abrir qdo esta o DBF que veio do cliente ...

Re: Erro estranho - cria arquivo BBALBLFG

Enviado: 30 Mai 2008 12:44
por JLF
´o)

Algo mais...

Nenhuma idéia do que pode estar acontecendo ?

Re: Erro estranho - cria arquivo BBALBLFG

Enviado: 07 Jul 2008 10:29
por JLF
Só para dar um retorno aos Amigos,

Dividi o arquivo base "ao meio" e funcionou perfeitamente, gerei sem qualquer erro, depois abri a segunda metade e também foi gerado tudo corretamente.

X:)

Re: Erro estranho - cria arquivo BBALBLFG

Enviado: 07 Jul 2008 11:44
por gvc
Acertei algumas coisas no seu fonte.
Veja se funciona.

Código: Selecionar todos

***********
* GERATXT.PRG
* Gera o arquivo Texto dos lançamentos a serem lidos pelo CONTMATIC
* JLF - 31/05/2007
***********
* GeraTxt()
***********

#include "box.ch"
#include "inkey.ch"
#include "setcurs.ch"
// #include "sos.ch"

// FUNCTION GeraTxt()

local clinha, getlist := {}
local c16, c15, c14, c13, c12, c11
local c10, c09, c08, c07, c06, c05
local c04, c03, c02, c01
local vmes, vemp, fiddms3, fiddms1, fiddns1 // , fiddms2
local cjan, codmsg, jsd_esquerdo, jsd_direito

SET SCOREBOARD OFF
SET DATE BRIT
SET CENTURY ON
SET CONFIRM ON
SET WRAP ON
Set Date Brit //[mudei]
         
USE impcont
INDEX ON C06 TO dat1
SET INDEX TO dat1

PRIVATE ficMsg, fidDmsl, fidDms2

@ 04,01 CLEAR TO 21,78
@ 23,01 CLEAR TO 23,63
@ 05,31 SAY "Gravar listagem dos Lancamentos"
GO TOP
IF EOF()
   @ 23,01 CLEAR TO 23,78
   @ 23,10 SAY "Operacao cancelada, pois nao ha registros no banco de dados"
   TONE(300,0.02)
   TONE(500,0.02)
   CLEAR TYPEAHEAD
   INKEY(0)
   RETURN
ENDIF
**************************************************************
* Seleciona o periodo
*
ficMsg := SPACE(2)
fidDms1 := CTOD('')
fidDms2 := CTOD('')
cJan := SAVESCREEN(10,10,16,70)
SETCOLOR("w+/gr")
@ 10,10,16,70 BOX B_DOUBLE + ' '
@ 12,10 SAY JSD_ESQUERDA
@ 12,70 SAY JSD_DIREITA
@ 12,11,12,69 BOX B_SINGLE
@ 11,28 SAY "Parametros de Selecao"
@ 14,18 SAY "Data dos Lancamentos:"+SPACE(12)+"a"
@ 14,40 GET fidDms1
@ 14,53 GET fidDms2 VALID fidDms2 >= fidDms1
CLEAR TYPEAHEAD
SETCURSOR(SC_NORMAL)
READ
SETCURSOR(SC_NONE)
ficMsg := ALLTRIM(ficMsg)

// [Mudei]
IF LASTKEY()=K_ESC 
   RETURN
ENDIF

DO CASE
   CASE !EMPTY(ficMsg) .AND. !EMPTY(fidDms1) .AND. !EMPTY(fidDms2)
      SET FILTER TO ficMsg $ codmsg .AND. C06 >= fidDms1 .AND. C06 <= fidDms2
   CASE !EMPTY(ficMsg) .AND. EMPTY(fidDns1) .and. EMPTY(fidDms2)
      SET FILTER TO ficMsg $ codmsg
   CASE EMPTY(ficMsg) .AND. !EMPTY(fidDms1) .AND. !EMPTY(fidDms2)
      SET FILTER TO C06 >= fidDms1 .AND. C06 <= fidDms2
   OTHERWISE
      SET FILTER TO
ENDCASE
GO TOP
// [\Mudei]
SETCOLOR("w+/2>g")
RESTSCREEN(10,10,16,70,cJan)
********************************************************************
IF EOF()
   @ 23,01 CLEAR TO 23,78
   @ 23,05 SAY "Selecao liberada, pois nao existe registro que satisfaca esta selecao"
   TONE(300,0.02)
   TONE(500,0.02)
   CLEAR TYPEAHEAD
   INKEY(0)
   SET FILTER TO
   GO TOP
ENDIF
@ 23,01 CLEAR TO 23,78
@ 23,64 SAY "[ESC] Abandona"
SETCOLOR("w+/gr")
@ 10,18,14,61 BOX B_DOUBLE+SPACE(1)
@ 12,20 SAY "Confirma a geracao do arquivo ? [ENTER]"

DO WHILE .T.
   CLEAR TYPEAHEAD
   INKEY(0)
   DO CASE
      CASE LASTKEY() = K_ENTER
         SETCOLOR("w+/bg")
         @ 23,01 CLEAR TO 23,78
         SETCOLOR("w+/gr")
         @ 12,19 CLEAR TO 12,60
         @ 12,34 SAY "Gerando..."
         SET CONSOLE OFF
         SET PRINT ON

         **************************************************************
         * Cria o arquivo em formato TXT
         *-----
         fidDms3 := DTOC(C06)
         vMes := SUBSTR(fidDms3, 4, 2)
         *-----
         vEmp := "FI004004."

         private hArquivo, arq

// [Mudei]
         arq := vEmp + vMes

/*
         hArquivo := fCreate(arq, 0)

         If hArquivo = -1
            Alert('Erro na criacao do arquivo')
            Return
         Endif
*/

         SET PRINT TO &arq
         SET DEVICE TO PRINTER

// [\Mudei]

         * --- Inicio da pagina
         cLinha := 0
         DO WHILE !EOF()

            * --- Linhas de detalhe do relatorio

            @ cLinha,000 SAY c01
            @ cLinha,005 SAY c02
            @ cLinha,023 SAY c03
            @ cLinha,041 SAY c04
            @ cLinha,046 SAY strzero(c05 * 100, 12)
            @ cLinha,058 SAY C06
            @ cLinha,068 SAY c07
            @ cLinha,074 SAY c08
            @ cLinha,180 SAY c09
            @ cLinha,215 SAY c10
            @ cLinha,217 SAY c11
            @ cLinha,237 SAY c12
            @ cLinha,257 SAY c13
            @ cLinha,277 SAY strzero(c14 * 100, 15)
            @ cLinha,292 SAY c15
            @ cLinha,312 SAY strzero(c16 * 100, 15)
            cLinha++
            SKIP
         ENDDO

         * ------------ final --------------------

//         fClose(hArquivo) //[Mudei]
         SET PRINTER OFF
         SET CONSOLE ON
         EXIT
      CASE LASTKEY()=K_ESC
         EXIT
      OTHERWISE
         TONE(300,0.02)
         TONE(500,0.02)
   ENDCASE
ENDDO
SET FILTER TO
GO TOP
SETCOLOR("w+/bg")

RETURN