Página 1 de 1

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

Enviado: 08 Dez 2004 14:26
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)

idem

Enviado: 09 Dez 2004 21:12
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