Erro --> corrupted detected
Enviado: 02 Abr 2008 08:40
Mocada ,meu problema é o seguinte
Uso 3 maquinas,2 com windows Xp e 1 com windows 98
Meu sistema esta instalado no windows Xp,qndo apenas os Xps estao trabalhando o programa roda normal.
Mas qndo o windows 98 entra na jogada pronto, as maquinas do Xp que vao abrir algum arquivo da erro e é so nas maquinas do windows XP.
alguem tem alguma solucao pra isso,fora mudar de 98 para xp ?
uso o clipper 5.2e e o blinker 6
Abaixo estou colocando minha funcao pra criacao de arquivo...valeu mocada
/-----------------------------------
FUNCTION ABRE(CARQ,ASTRUCT,AIND,CALIAS)
//-----------------------------------
LOCAL BLASTH,OBJERROR,LRET:=.T.,NI,CCAMPO,CIND
WHILE .T.
//-> existe indice o arquivo
IF AIND <> NIL
CARQI := "INDICE\"+SUBS(CARQ,1,LEN(CARQ)-3)+"CDX"
CARQ := "DADOS\"+CARQ
BEGIN SEQUENCE
IF !FILE(CARQ) .AND. !EMPTY(ASTRUCT)
DBCREATE(CARQ,ASTRUCT,'SIXCDX')
DEL(CARQI)
ELSEIF !FILE(CARQ)
LRET:=.F.
ENDIF
IF FILE(CARQ)
IF !EMPTY(SELECT(CALIAS))
&CALIAS->(DBCLOSEAREA())
ENDIF
IF !FILE(CARQI) .AND. !EMPTY(AIND)
DBUSEAREA(.T.,,CARQ,CALIAS,.F.)
WHILE EMPTY(SELECT(CALIAS))
MENS("AGUARDE...OUTRO USUARIO ABRINDO ARQUIVO")
DBUSEAREA(.T.,,CARQ,CALIAS,.F.)
MENS("")
ENDDO
FOR NI = 1 TO LEN(AIND)
CCAMPO := AIND[NI,1]
CIND := AIND[NI,2]
INDEX on &(CCAMPO) TAG &(CIND) TO &CARQI
NEXT
&CALIAS->(DBCLOSEAREA())
ENDIF
DBUSEAREA(.T.,'SIXCDX',CARQ,CALIAS,.T.)
IF !EMPTY(AIND)
SET INDEX TO &CARQI
ORDSETFOCUS(LEN(AIND))
IF INDEXORD()<>LEN(AIND)
IF !EMPTY(SELECT(CARQ))
&CARQ->(DBCLOSEAREA())
ENDIF
ENDIF
CIND := AIND[1,2]
SET ORDER TO TAG &CIND
ELSE
DBGOTO(1)
ENDIF
ELSE
LRET:=.F.
ENDIF
RECOVER USING OBJERROR
IF !EMPTY(SELECT(CAlias))
&CAlias->(DBCLOSEAREA())
ENDIF
IF (OBJERROR:SUBSYSTEM = "SIXCDX")
IF (OBJERROR:SUBCODE = 602)
IF (SUBS(OBJERROR:FILENAME,-3) = "CDX")
DEL(OBJERROR:FILENAME)
ENDIF
ENDIF
ENDIF
LOOP
END
ELSE
//-> arquivo nao trabalha com indice
CARQ := "DADOS\"+CARQ
IF !EMPTY(SELECT(CAlias))
&CAlias->(DBCLOSEAREA())
endif
IF !FILE(CARQ) .AND. !EMPTY(ASTRUCT)
DBCREATE(CARQ,ASTRUCT)
ENDIF
DBUSEAREA(.T.,,CARQ,CALIAS,.T.)
ENDIF
EXIT
ENDDO
RETURN(LRET)
Uso 3 maquinas,2 com windows Xp e 1 com windows 98
Meu sistema esta instalado no windows Xp,qndo apenas os Xps estao trabalhando o programa roda normal.
Mas qndo o windows 98 entra na jogada pronto, as maquinas do Xp que vao abrir algum arquivo da erro e é so nas maquinas do windows XP.
alguem tem alguma solucao pra isso,fora mudar de 98 para xp ?
uso o clipper 5.2e e o blinker 6
Abaixo estou colocando minha funcao pra criacao de arquivo...valeu mocada
/-----------------------------------
FUNCTION ABRE(CARQ,ASTRUCT,AIND,CALIAS)
//-----------------------------------
LOCAL BLASTH,OBJERROR,LRET:=.T.,NI,CCAMPO,CIND
WHILE .T.
//-> existe indice o arquivo
IF AIND <> NIL
CARQI := "INDICE\"+SUBS(CARQ,1,LEN(CARQ)-3)+"CDX"
CARQ := "DADOS\"+CARQ
BEGIN SEQUENCE
IF !FILE(CARQ) .AND. !EMPTY(ASTRUCT)
DBCREATE(CARQ,ASTRUCT,'SIXCDX')
DEL(CARQI)
ELSEIF !FILE(CARQ)
LRET:=.F.
ENDIF
IF FILE(CARQ)
IF !EMPTY(SELECT(CALIAS))
&CALIAS->(DBCLOSEAREA())
ENDIF
IF !FILE(CARQI) .AND. !EMPTY(AIND)
DBUSEAREA(.T.,,CARQ,CALIAS,.F.)
WHILE EMPTY(SELECT(CALIAS))
MENS("AGUARDE...OUTRO USUARIO ABRINDO ARQUIVO")
DBUSEAREA(.T.,,CARQ,CALIAS,.F.)
MENS("")
ENDDO
FOR NI = 1 TO LEN(AIND)
CCAMPO := AIND[NI,1]
CIND := AIND[NI,2]
INDEX on &(CCAMPO) TAG &(CIND) TO &CARQI
NEXT
&CALIAS->(DBCLOSEAREA())
ENDIF
DBUSEAREA(.T.,'SIXCDX',CARQ,CALIAS,.T.)
IF !EMPTY(AIND)
SET INDEX TO &CARQI
ORDSETFOCUS(LEN(AIND))
IF INDEXORD()<>LEN(AIND)
IF !EMPTY(SELECT(CARQ))
&CARQ->(DBCLOSEAREA())
ENDIF
ENDIF
CIND := AIND[1,2]
SET ORDER TO TAG &CIND
ELSE
DBGOTO(1)
ENDIF
ELSE
LRET:=.F.
ENDIF
RECOVER USING OBJERROR
IF !EMPTY(SELECT(CAlias))
&CAlias->(DBCLOSEAREA())
ENDIF
IF (OBJERROR:SUBSYSTEM = "SIXCDX")
IF (OBJERROR:SUBCODE = 602)
IF (SUBS(OBJERROR:FILENAME,-3) = "CDX")
DEL(OBJERROR:FILENAME)
ENDIF
ENDIF
ENDIF
LOOP
END
ELSE
//-> arquivo nao trabalha com indice
CARQ := "DADOS\"+CARQ
IF !EMPTY(SELECT(CAlias))
&CAlias->(DBCLOSEAREA())
endif
IF !FILE(CARQ) .AND. !EMPTY(ASTRUCT)
DBCREATE(CARQ,ASTRUCT)
ENDIF
DBUSEAREA(.T.,,CARQ,CALIAS,.T.)
ENDIF
EXIT
ENDDO
RETURN(LRET)