Criacao de Arquivo
Enviado: 14 Dez 2007 09:54
Mocada, estou com o seguinte problema:
Em um servidor Xp com terminais 98 esta acontecendo de na hora de criar os arquivos da o erro Create Erro(dos 95).
Isso usando o SIXCDX,CLIPPER 5.2e
O estranho é que usando o DBFCDX,clipper 5.2e nao acontece isso.
Esta faltando alguma biblioteca no Sixcdx ?
abaixo esta o modo que crio os arquivos, tanto pra sixcdx qnto dbfcdx
=====> usando sisxcdx
//-----------------------------------
FUNCTION ABRE(CARQ,ASTRUCT,AIND,CALIAS,LMEN,LC)
//-----------------------------------
LOCAL BLASTH,OBJERROR,LRET:=.T.,NI,CCAMPO,CIND
IF LMEN=NIL
LMEN:=.T.
ENDIF
IF LMEN
MENS("ABRINDO ARQUIVO "+CARQ+".")
ENDIF
WHILE .T.
IF AIND <> NIL
IF LC == NIL .OR. LC <> .F.
CARQI := "INDICE\"+SUBS(CARQ,1,LEN(CARQ)-3)+"CDX"
CARQ := "DADOS\"+CARQ
ELSE
//=> GAMES
CARQi := X_GAV+'\GAMES\indice\'+SUBS(CARQ,1,LEN(CARQ)-3)+"CDX"
CARQ := X_GAV+'\GAMES\DADOS\'+carq
ENDIF
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.,'SIXCDX',CARQ,CALIAS,.F.)
WHILE EMPTY(SELECT(CALIAS))
DBUSEAREA(.T.,'SIXCDX',CARQ,CALIAS,.F.)
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
IF LC == NIL .OR. LC <> .F.
CARQ := "DADOS\"+CARQ
ELSE
//=> GAMES
CARQ := X_GAV+'\GAMES\DADOS\'+carq
ENDIF
IF !EMPTY(SELECT(CAlias))
&CAlias->(DBCLOSEAREA())
endif
IF !FILE(CARQ) .AND. !EMPTY(ASTRUCT)
DBCREATE(CARQ,ASTRUCT,'SIXCDX')
ENDIF
DBUSEAREA(.T.,,CARQ,CALIAS,.T.)
ENDIF
EXIT
ENDDO
IF LMEN
MENS()
ENDIF
RETURN(LRET)
=======> usando dbfcdx
//-----------------------------------
FUNCTION ABRE(CARQ,ASTRUCT,AIND,CALIAS,LMEN)
//-----------------------------------
LOCAL BLASTH,OBJERROR,LRET:=.T.,NI,CCAMPO,CIND
IF LMEN=NIL
LMEN:=.T.
ENDIF
IF LMEN
MENS("ABRINDO ARQUIVO "+CARQ+".")
ENDIF
WHILE .T.
IF AIND <> NIL
CARQI := SUBS(CARQ,1,LEN(CARQ)-3)+"CDX"
BEGIN SEQUENCE
IF !FILE(CARQ) .AND. !EMPTY(ASTRUCT)
DBCREATE(CARQ,ASTRUCT,'DBFCDX')
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.,'DBFCDX',CARQ,CALIAS,.F.)
WHILE EMPTY(SELECT(CALIAS))
DBUSEAREA(.T.,'DBFCDX',CARQ,CALIAS,.F.)
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.,'DBFCDX',CARQ,CALIAS,.T.)
IF !EMPTY(AIND)
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 = "DBFCDX")
IF (OBJERROR:SUBCODE = 602)
IF (SUBS(OBJERROR:FILENAME,-3) = "CDX")
DEL(OBJERROR:FILENAME)
ENDIF
ENDIF
ENDIF
LOOP
END
ELSE
IF !EMPTY(SELECT(CAlias))
&CAlias->(DBCLOSEAREA())
endif
IF !FILE(CARQ) .AND. !EMPTY(ASTRUCT)
DBCREATE(CARQ,ASTRUCT,'DBFCDX')
ENDIF
DBUSEAREA(.T.,,CARQ,CALIAS,.T.)
ENDIF
EXIT
ENDDO
IF LMEN
MENS()
ENDIF
RETURN(LRET)
Em um servidor Xp com terminais 98 esta acontecendo de na hora de criar os arquivos da o erro Create Erro(dos 95).
Isso usando o SIXCDX,CLIPPER 5.2e
O estranho é que usando o DBFCDX,clipper 5.2e nao acontece isso.
Esta faltando alguma biblioteca no Sixcdx ?
abaixo esta o modo que crio os arquivos, tanto pra sixcdx qnto dbfcdx
=====> usando sisxcdx
//-----------------------------------
FUNCTION ABRE(CARQ,ASTRUCT,AIND,CALIAS,LMEN,LC)
//-----------------------------------
LOCAL BLASTH,OBJERROR,LRET:=.T.,NI,CCAMPO,CIND
IF LMEN=NIL
LMEN:=.T.
ENDIF
IF LMEN
MENS("ABRINDO ARQUIVO "+CARQ+".")
ENDIF
WHILE .T.
IF AIND <> NIL
IF LC == NIL .OR. LC <> .F.
CARQI := "INDICE\"+SUBS(CARQ,1,LEN(CARQ)-3)+"CDX"
CARQ := "DADOS\"+CARQ
ELSE
//=> GAMES
CARQi := X_GAV+'\GAMES\indice\'+SUBS(CARQ,1,LEN(CARQ)-3)+"CDX"
CARQ := X_GAV+'\GAMES\DADOS\'+carq
ENDIF
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.,'SIXCDX',CARQ,CALIAS,.F.)
WHILE EMPTY(SELECT(CALIAS))
DBUSEAREA(.T.,'SIXCDX',CARQ,CALIAS,.F.)
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
IF LC == NIL .OR. LC <> .F.
CARQ := "DADOS\"+CARQ
ELSE
//=> GAMES
CARQ := X_GAV+'\GAMES\DADOS\'+carq
ENDIF
IF !EMPTY(SELECT(CAlias))
&CAlias->(DBCLOSEAREA())
endif
IF !FILE(CARQ) .AND. !EMPTY(ASTRUCT)
DBCREATE(CARQ,ASTRUCT,'SIXCDX')
ENDIF
DBUSEAREA(.T.,,CARQ,CALIAS,.T.)
ENDIF
EXIT
ENDDO
IF LMEN
MENS()
ENDIF
RETURN(LRET)
=======> usando dbfcdx
//-----------------------------------
FUNCTION ABRE(CARQ,ASTRUCT,AIND,CALIAS,LMEN)
//-----------------------------------
LOCAL BLASTH,OBJERROR,LRET:=.T.,NI,CCAMPO,CIND
IF LMEN=NIL
LMEN:=.T.
ENDIF
IF LMEN
MENS("ABRINDO ARQUIVO "+CARQ+".")
ENDIF
WHILE .T.
IF AIND <> NIL
CARQI := SUBS(CARQ,1,LEN(CARQ)-3)+"CDX"
BEGIN SEQUENCE
IF !FILE(CARQ) .AND. !EMPTY(ASTRUCT)
DBCREATE(CARQ,ASTRUCT,'DBFCDX')
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.,'DBFCDX',CARQ,CALIAS,.F.)
WHILE EMPTY(SELECT(CALIAS))
DBUSEAREA(.T.,'DBFCDX',CARQ,CALIAS,.F.)
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.,'DBFCDX',CARQ,CALIAS,.T.)
IF !EMPTY(AIND)
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 = "DBFCDX")
IF (OBJERROR:SUBCODE = 602)
IF (SUBS(OBJERROR:FILENAME,-3) = "CDX")
DEL(OBJERROR:FILENAME)
ENDIF
ENDIF
ENDIF
LOOP
END
ELSE
IF !EMPTY(SELECT(CAlias))
&CAlias->(DBCLOSEAREA())
endif
IF !FILE(CARQ) .AND. !EMPTY(ASTRUCT)
DBCREATE(CARQ,ASTRUCT,'DBFCDX')
ENDIF
DBUSEAREA(.T.,,CARQ,CALIAS,.T.)
ENDIF
EXIT
ENDDO
IF LMEN
MENS()
ENDIF
RETURN(LRET)