Criacao de Arquivo

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

negrao
Usuário Nível 3
Usuário Nível 3
Mensagens: 186
Registrado em: 06 Jul 2004 08:38

Criacao de Arquivo

Mensagem por negrao »

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)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Tche, nunca trabalhei com SIX mas vou dar umas pitada, se eu fala besteira...perdoe-me !!!
O estranho é que usando o DBFCDX,clipper 5.2e nao acontece isso.
Certeza que é com 5.2e ? parece que o DBFCDX só funciona na 5.3....
Esta faltando alguma biblioteca no Sixcdx ?
quais LIB vc esta linkando ? vc configurou seu ambiente certinho ? FILES, BUFFERS etc...?

Outra coisa, não se se tem a haver....mas vc em diversas parte do seu codigo vc usar referencias a "DBFCDX" a pergunta é a SIX reconhece essas referencias como "DBFCDX" ?

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Responder