Bemafi - da o seguinte erro (erro ao criar arquivo)

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

JMARCELO
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 13 Jul 2004 09:39
Localização: presidente venceslau - sp
Contato:

Bemafi - da o seguinte erro (erro ao criar arquivo)

Mensagem por JMARCELO »

caros colegas


estou usando o bemafi.exe para impressao no ecf bematech so que algumas vezes na todas da o seguinte erro limpa toda a tela e na linha 0 escreve a seguinte frase erro ao criar arquivo status.txt pressione qualquer tecle so que en nao escrevi esta frase e nao encontro o problema abaixo vou anexar a funcao que estou utilizando se alguem puder melhora-la agradeco


desde ja obrigado

Código: Selecionar todos

/////////////////////
FUNCTION GRAVAECF
/////////////////////
PARAMETERS COMANDO,WTPRET
IF EMPTY(WTPRET)
    WTPRET=0
ENDIF
DELETE FILE('C:\NOTA\BEMAFI.CMD')
DELETE FILE('C:\NOTA\STATUS.TXT')
DELETE FILE('C:\NOTA\RETORNO.TXT')
WIARQ:=FCREATE('C:\NOTA\BEMAFI.CMD')
FWRITE(WIARQ,@COMANDO,LEN(COMANDO) )
FCLOSE(WIARQ)
! C:\NOTA\BEMAFI.EXE
WSTART=SECONDS()
WTIMEO=60
DO WHILE .T.
    IF FILE ('C:\NOTA\STATUS.TXT')
        WASTS  :=FOpen('C:\NOTA\STATUS.TXT')
        IF FERROR() !=0
            AVISO2('ATENCAO,,,ERRO NA ABERTURA DO ARQUIVO 01 STATUS')
            RESTO SCREEN FROM WTELECF
            IF WTPRET=1
                RETURN(.F.)
            ELSE
                RETURN('0')
            ENDIF
        ENDIF
        WTASTS :=FSeek(WASTS,0,2)
        FClose(WASTS)
        WASTS  := FOpen('C:\NOTA\STATUS.TXT' )
        IF FERROR() !=0
            AVISO2('ATENCAO,,,ERRO NA ABERTURA DO ARQUIVO 02 STATUS')
            RESTO SCREEN FROM WTELECF
            IF WTPRET=1
                RETURN(.F.)
            ELSE
                RETURN('0')
            ENDIF
        ENDIF
        WSRET  := ' '
        WDSTS  := ''
        FOR X1 := 1 TO WTASTS
            FREAD(WASTS,@WSRET,1)
            WDSTS=WDSTS+WSRET
        NEXT X1
        //// ST1 ////////////////////////////////////////////////////////
        WST1_BIT_0= "N£mero de parƒmetros de CMD inv lido"
        WST1_BIT_1= "Cupom aberto"
        WST1_BIT_2= "Comando inexistente"
        WST1_BIT_3= "Primeiro dado de CMD nÆo foi ESC (1Bh)"
        WST1_BIT_4= "Impressora em erro"
        WST1_BIT_5= "Erro no rel¢gio"
        WST1_BIT_6= "Pouco papel"
        WST1_BIT_7= "Fim de papel"
        //// ST2 //////////////////////////////////////////////////////
        WST2_BIT_0= "Comando nÆo executado"
        WST2_BIT_1= "CNPJ/IE do propriet rio nÆo programados"
        WST2_BIT_2= "Cancelamento nÆo permitido"
        WST2_BIT_3= "Capacidade de al¡quotas lotada"
        WST2_BIT_4= "Al¡quota nÆo programada"
        WST2_BIT_5= "Erro na Mem¢ria RAM CMOS nÆo vol til"
        WST2_BIT_6= "Mem¢ria fiscal lotada"
        WST2_BIT_7= "Tipo de parƒmetro de CMD inv lido"
        WIACK:=VAL(SUBSTR(WDSTS,1,3))
        WIST1:=VAL(SUBSTR(WDSTS,4,3))
        WIST2:=VAL(SUBSTR(WDSTS,7,3))
        IF WIACK=21
            AVISO2("ATENCAO,,,IMPRESSORA RETORNO NAK!!! ERRO COMINICACAO")
            RESTO SCREEN FROM WTELECF
            IF WTPRET=1
                RETURN(.F.)
            ELSE
                RETURN('0')
            ENDIF
        ENDIF
        IF WIACK<>21 .AND. WIACK<>06
            AVISO2("ATENCAO,,,IMPRESSORA RETORNO INFORMACAO INVALIDA")
            RESTO SCREEN FROM WTELECF
            IF WTPRET=1
                RETURN(.F.)
            ELSE
                RETURN('0')
            ENDIF
        ENDIF
        //// Verificando o ST1 /////////////////////////////////////////
        WMENS1=SPACE(30)
        WMENS2=SPACE(30)
        WRET1=.T.
        WRET2=.T.
        IF WIST1 = 128
            WMENS1=WST1_BIT_7
            WRET1=.F.
        ENDIF
        IF WIST1 = 64
            WMENS1=WST1_BIT_6
        ENDIF
        IF WIST1 = 32
            WMENS1=WST1_BIT_5
            WRET1=.F.
        ENDIF
        IF WIST1 = 16
            WMENS1=WST1_BIT_4
            WRET1=.F.
        ENDIF
        IF WIST1 = 8
            WMENS1=WST1_BIT_3
            WRET1=.F.
        ENDIF
        IF WIST1 = 4
            WMENS1=WST1_BIT_2
            WRET1=.F.
        ENDIF
        IF WIST1 = 2
            WMENS1=WST1_BIT_1
            WRET1=.F.
        ENDIF
        IF WIST1 = 1
            WMENS1=WST1_BIT_0
            WRET1=.F.
        ENDIF
        //// Verificando o ST2 /////////////////////////////////////////
        IF WIST2 = 128
            WMENS2=WST2_BIT_7
            WRET2=.F.
        ENDIF
        IF WIST2 = 64
            WMENS2=WST2_BIT_6
            WRET2=.F.
        ENDIF
        IF WIST2 = 32
            WMENS2=WST2_BIT_5
            WRET2=.F.
        ENDIF
        IF WIST2 = 16
            WMENS2=WST2_BIT_4
            WRET2=.F.
        ENDIF
        IF WIST2 = 8
           WMENS2=WST2_BIT_3
           WRET2=.F.
        ENDIF
        IF WIST2 = 4
           WMENS2=WST2_BIT_2
           WRET2=.F.
        ENDIF
        IF WIST2 = 2
            WMENS2=WST2_BIT_1
            WRET2=.F.
        ENDIF
        IF WIST2 = 1
           WMENS2=WST2_BIT_0
           WRET2=.F.
        ENDIF
        IF WRET1=.F. .OR. WRET2=.F.
            SAVE SCREEN TO WTELST
            SET COLO TO B/W
            @ 20,00 CLEA TO 23,79
            @ 20,00 TO 23,79
            SET COLO TO R/W
            @ 21,01 SAY 'Mensagem ST1  '
            SET COLO TO B/W
            @ 21,COL()+1 SAY ALLTRIM(WMENS1)
            SET COLO TO R/W
            @ 22,01 SAY 'Mensagem ST2  '
            SET COLO TO B/W
            @ 22,COL()+1 SAY ALLTRIM(WMENS2)
            SET COLO TO &WCOR2
            INKEY(0)
            RESTO SCREEN FROM WTELST
            IF WTPRET=1
                RETURN(.F.)
            ELSE
                RETURN('0')
            ENDIF
        ENDIF
        IF WIACK=06
            IF FILE('C:\NOTA\RETORNO.TXT')
                WASTSR  :=FOpen('C:\NOTA\RETORNO.TXT')
                IF FERROR() !=0
                    AVISO2('ATENCAO,,,ERRO NA ABERTURA DO ARQUIVO 01 RETORNO')
                    RESTO SCREEN FROM WTELECF
                    IF WTPRET=1
                        RETURN(.F.)
                    ELSE
                        RETURN('0')
                    ENDIF
                ENDIF
                WTASTSR :=FSeek(WASTSR,0,2)
                FClose(WASTSR)
                WASTSR := FOpen('C:\NOTA\RETORNO.TXT' )
                IF FERROR() !=0
                    AVISO2('ATENCAO,,,ERRO NA ABERTURA DO ARQUIVO 02 RETORNO')
                    RESTO SCREEN FROM WTELECF
                    IF WTPRET=1
                        RETURN(.F.)
                    ELSE
                        RETURN('0')
                    ENDIF
                ENDIF
                WSRETR  := ' '
                WDSTSR  := ''
                FOR X2 := 1 TO WTASTSR
                    FREAD(WASTSR,@WSRETR,1)
                    WDSTSR=WDSTSR+WSRETR
                NEXT X2
                RETURN(WDSTSR)
            ELSE
                //// TESTAR ESTA LINHA
                WDSTSR=.T.
                EXIT
            ENDIF
        ENDIF
    ELSE
       IF (SECONDS()>=WSTART+WTIMEO)
            AVISO2('ATENCA,,,HOUVE PROBLEMA COM O ECF!!')
            RESTO SCREEN FROM WTELECF
            IF WTPRET=1
                RETURN(.F.)
            ELSE
                RETURN('0')
            ENDIF
       ENDIF
        LOOP
    ENDIF
ENDDO
RETURN(WDSTSR)
Editado pela última vez por Pablo César em 11 Abr 2013 09:45, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Mário Isa
Usuário Nível 4
Usuário Nível 4
Mensagens: 907
Registrado em: 07 Jul 2004 13:54
Localização: Ilha Solteira-sp

idem

Mensagem por Mário Isa »

deve ser porque existe o arquivo status.txt e está com
atributo r (somente leitura) e também h (hidden) algo assim.

no dos digite

dir status.txt /a

assim é mostrado o arquivo independente de atributos

para retirar os atributos

attrib -r -s -h status.txt

abraços
Responder