LEER ARCHIVO TXT Y PASAR A TABLA WINDEV

53 views
Skip to first unread message

nexus133

unread,
Jul 24, 2019, 12:25:34 AM7/24/19
to WINDEV-LA
Buenas noches grupo

Tengo un archivo de texto delimitado los campos con TAB y cada fin de linea por CR, cuando abro el archivo por el bloc de notas se en un formato continuo de varias lineas asi

25/07/2018 TAB COBRANZA TAB VIGENTE TAB 2.50 CR 25/07/2018 TAB COBRANZA TAB VENCIDA TAB 3.50 CR.......etc etc.

entonces lo que el siguiente codigo supuestamente hace es leer linea por linea hasta encontrar un CR y ponerlo en la siguiente linea asi:

25/07/2018 TAB COBRANZA TAB VIGENTE TAB 2.50
25/07/2018 TAB COBRANZA TAB VENCIDA TAB 3.50

IF EDT_nombrearchivo="" THEN
    Info("Debe seleccionar un archivo")
    ReturnToCapture(EDT_nombrearchivo)
END
// Open the file
FileID is int = fOpen(EDT_nombrearchivo,foRead)
sNuevoarchivo,lineread are strings
nposision is int
// Display an error message if the opening was not performed
IF FileID = -1 THEN
    Error(ErrorInfo(errMessage))
ELSE
    // Read the first line of the file
    // 178 ahi termina el encabezado
   // lee desde el caracter 178
    nposision = fSeek(FileID,178,fpCurrent)
    LOOP
        lineread = fReadLine(FileID)
        IF ErrorOccurred THEN
            Error(ErrorInfo())
            BREAK
        END
        // End of file?
        IF lineread = EOT THEN BREAK
        // en esta variable se cargara linea por linea el contenido del archivo
        sNuevoarchivo += [CR] + lineread
    END
    fClose(FileID)
    fSaveText(EDT_nombrearchivo,sNuevoarchivo)
    // cargamos nuevamente el archivo pero con formato diferente
   
    FileID = fOpen(EDT_nombrearchivo,foRead)
    IF FileID = -1 THEN
        Error(ErrorInfo(errMessage))
    ELSE
        LOOP
            lineread = fReadLine(FileID,CR)
            IF ErrorOccurred THEN
                Error(ErrorInfo())
                BREAK
            END
            Trace(lineread)
            // End of file?
            IF lineread = EOT THEN BREAK
            IF lineread <> "" THEN
               tableaddline(TABLE_docsri,ExtractString(lineread,1,TAB),ExtractString(lineread,2,TAB),ExtractString(lineread,3,TAB))
            END
        END   
    END
END

desafortunadamente el FREADLINE() carga todo el contenido del archivo sin respetar los CR y al momento de pasar a la tabla solo me aparece una linea unica. Lo he revisado con el TRACE(lineread) y aparece una linea unica conteniendo todo el archivo, no hay saltos de linea a pesar de que se visualiza que hay CR ("<\n>")

Alguien puede decirme que estoy haciendo mal.
De antemano Gracias. por sus comentarios

Joshua López Rivero

unread,
Jul 24, 2019, 3:43:32 AM7/24/19
to WINDEV-LA
Sustituye "fReadLine(FileID)" por "fReadLine(FileID,CR)" y prueba.

Un Saludo, joshua.
Reply all
Reply to author
Forward
0 new messages