Problema extraño con hb_memoread
Posted: Mon Aug 24, 2020 8:00 pm
Saludos amigos,
Tengo un problema con la lectura de unos archivos .TXT, este es el segmento del código problemático:
Leo el archivo con hb_memoread y lo almaceno en la variable cRSPtxt, pero ya en la línea siguiente la variable llega vacia. cResponsTxt tiene el nombre del archivo, si no existiera no pasaria el IF FILE(), me parece un error muy extraño no sé que no estoy viendo.
Agradeceré cualquier ayuda al respecto.
Cordiales saludos,
Tengo un problema con la lectura de unos archivos .TXT, este es el segmento del código problemático:
Code: Select all
* ------------------------------------------------------ *
* SISTEMA : INFO-FARMA *
* PRG : VENTGRAB.PRG *
* CREADO : 21-08-2020 *
* ACTUALIZADO : *
* AUTOR : EDUARDO V. FLORES RIVAS *
* COMENTARIOS : Envia el request al sertvidor de trans. *
* ------------------------------------------------------ *
FUNC Request_Venta
LOCAL cOperStamp := SELLOFECHA()+STRZERO(SYS_ESTAC,2)
LOCAL cRequestTxt := PATHREQUEST + 'rqst_' + cOperStamp + '.txt'
LOCAL cRequestCab := PATHREQUEST + 'rqst_' + cOperStamp + '_cab.dbf'
LOCAL cRequestDet := PATHREQUEST + 'rqst_' + cOperStamp + '_det.dbf'
LOCAL cResponsTxt := PATHRESPONS + 'resp_' + cOperStamp + '.txt' //<-ESTE ES EL ARCHIVO .TXT QUE NECESITO LEER
LOCAL aRequestCab := {;
{'CLIE_COD','C', 6,0},;
{'CLIE_NOM','C',50,0},;
{'DIR1_COD','C', 3,0},;
{'DIR2_COD','C', 3,0},;
{'TRAN_COD','C', 3,0},;
{'VEND_COD','C', 2,0},;
{'VEND_NOM','C',30,0},;
{'DOCU_DIA','N', 3,0},;
{'TOTA_CST','N',12,2},;
{'TOTA_AFE','N',12,2},;
{'TOTA_INA','N',12,2},;
{'TOTA_EXO','N',12,2},;
{'TOTA_GRA','N',12,2},;
{'TOTA_IGV','N',12,2},;
{'TOTA_DOC','N',12,2},;
{'USER_COD','C', 2,0},;
{'USER_NOM','C', 2,0},;
{'ESTA_NUM','N', 2,0}}
LOCAL cQSTtxt := ''
LOCAL cRSPtxt := 'Error'+chr(13)+chr(10)
DBCREATE( cRequestCab , aRequestCab )
USE &cRequestCab ALIAS VCTMP EXCLUSIVE NEW
APPEND BLANK
REPLACE VCTMP->CLIE_COD WITH Win_Ventas.TxtClieCod.Value
REPLACE VCTMP->CLIE_NOM WITH Win_Ventas.TxtClieDes.Value
REPLACE VCTMP->DIR1_COD WITH Win_Ventas.TxtDireCod.Value
REPLACE VCTMP->DIR2_COD WITH Win_Ventas.TxtDireCod2.Value
REPLACE VCTMP->TRAN_COD WITH Win_Ventas.TxtTranCod.Value
REPLACE VCTMP->VEND_COD WITH Win_Ventas.TxtVendCod.Value
REPLACE VCTMP->VEND_NOM WITH Win_Ventas.TxtVendNom.Value
REPLACE VCTMP->DOCU_DIA WITH Win_Ventas.TxtDias.Value
REPLACE VCTMP->USER_COD WITH Win_Ventas.TxtUserCod.Value
REPLACE VCTMP->USER_NOM WITH Win_Ventas.TxtUserNom.Value
REPLACE VCTMP->ESTA_NUM WITH SYS_ESTAC
CLOSE VCTMP
SELE VDTMP
COPY STRUCTURE TO &cRequestDet
COPY TO &cRequestDet
IF FILE(cRequestCab) .AND. FILE(cRequestDet)
cQSTtxt := 'registro de venta'+chr(13)+chr(10)
hb_memowrit( cRequestTxt , cQSTtxt )
IF FILE( cRequestTxt )
nTrys := 0
DO WHILE .T.
IF FILE( cResponsTxt )
cRSPtxt := hb_memoread( cResponsTxt ) //<- AQUI EL PROBLEMA, PARECE NO LEER EL ARCHIVO DE TEXTO
msginfo( 'Venta grabada.'+CHR(13)+cRSPtxt ) //<- cRSPtxt ESTA VACIO
CLOSE VDTMP
// DELETE FILE &cResponsTxt
EXIT
ELSE
nTrys++
IF nTrys > 1000000
msginfo( cRSPtxt )
// msgexclamation('El servidor de transacciones no responde'+chr(13)+'Revise si el InfoServ esta activo.')
EXIT
ENDIF
ENDIF
ENDDO
ELSE
msginfo('ERROR: No se pudo enviar el request al servidor de transacciones.')
ENDIF
ELSE
msginfo('ERROR: No se pudieron crear los archivos request en la carpeta RQS\.')
ENDIF
RETURN( cRSPtxt )
Agradeceré cualquier ayuda al respecto.
Cordiales saludos,