Leer archivo de texto desde VFP

4,713 views
Skip to first unread message

Roberto Lemos

unread,
May 2, 2013, 9:54:28 AM5/2/13
to publice...@googlegroups.com
Hola amigos, tengo unos archivos de texto que me envían en este formato, como los leo desde VFP
 
10806341237|20100016347|20434270461|20501842035|
 
 
Ojo que es así, como el modelo es decir sin el enter.
 
Saludos
 
Roberto Lemos
 

Carlos Miguel FARIAS

unread,
May 2, 2013, 10:00:44 AM5/2/13
to Grupo Fox
Usa la función alines(), para cada renglón.
El separador es un símbolo pipe | si mal no veo.
Esa función te deja el valor de un campo en cada elemento del array.
Si creas un cursor con un campo para cada columna, podes luego del alines, pasar los datos sin problemas.
Ojo, cada elemento del array va a ser una string. Si tenes que manejarlo como numérico, tendrás que hacer un bucle sobre el arreglo para convertirlos a numérico (val())
Saludos: Miguel, La Pampa (RA)

Fernando D. Bozzo

unread,
May 4, 2013, 1:59:39 PM5/4/13
to publice...@googlegroups.com
Hola Roberto:

Si los archivos son chicos (hasta unos pocos megas), te sirve el método que indica Miguel, pero si son archivos más grandes, te confiene abrirlos y leerlos con las funciones de bajo nivel de Fox para archivos: FOPEN(), FCLOSE(), FREAD(), FSEEK(), etc.

Saludos.-

Walter Valle

unread,
May 6, 2013, 10:45:41 AM5/6/13
to publice...@googlegroups.com
Hola Roberto,

Mira, para esto tienes diversos caminos, tengo un procedimiento que hace lo que necesitas, le quite alguna cosas porque para produccion lo tengo con otras cosas especificas, ahi lo que necesitas hacer es quitar las marcas de comentarios y eliminar la linea que dice && Eliminar, pero si ejecutas el codigo tal como esta... te funcionara.

SET TALK OFF
*
* Puedes hacer un LOCFILE() para tener el path completo en cualquier carpeta...

_getCodesFromTextFile('C:\TuTXT.TXT', '|')


PROCEDURE _getCodesFromTextFile
LPARAMETERS tcFile, tcSeparator
*!*  IF !FILE(tcFile)
*!*    RETURN .F.
*!*  ENDIF
tcSeparator = IIF(VARTYPE(tcSeparator) # 'C' OR EMPTY(tcSeparator), '|', tcSeparator)
LOCAL cText, lError
TRY
*!*    cText = FILETOSTR(tcFile)
  cText = [10806341237|20100016347|20434270461|20501842035|]       && Eliminar
CATCH TO oErr
  lError = .T.
  MESSAGEBOX(oErr.Message, 16, '<<Tu Aviso>>')
ENDTRY
IF lError
  RETURN .F.
ENDIF
*
LOCAL nWords, nCount
nCount = GETWORDCOUNT(cText, tcSeparator)
IF nCount < 1
  RETURN .F.
ENDIF
FOR i = 1 TO  nCount
  ? GETWORDNUM(cText, i, tcSeparator)
ENDFOR
*
RETURN .T.


Saludos,

Walter Valle

Rodribezul

unread,
May 20, 2019, 4:13:22 PM5/20/19
to Comunidad de Visual Foxpro en Español
Increible, me dio por mirar y esta solucion me facilito un trabajo

Gracias y Saludos

Luis suescún

unread,
May 20, 2019, 4:24:00 PM5/20/19
to publice...@googlegroups.com
Explicate mejor Rodribezul 

--
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/83fc591b-17e9-4f5e-8a71-496d52991b98%40googlegroups.com.

Mik

unread,
May 20, 2019, 4:41:18 PM5/20/19
to Comunidad de Visual Foxpro en Español
Si los datos en el archivo de texto tienen una estructura definida, puedes crear una tabla o cursor con las columnas respectivas y usar el comando APPEN FROM, algo asi:

CREATE CURSOR cCursor (Campo1 c(11), Campo2 c(11), Campo3 c(11), Campo4 c(11))
APPEND FROM d:\ArchivoTexto.txt DELIMITED WITH CHARACTER "|"
BROWSE

Saludos

Miguel Herbias
Lima-Peru

Luis la Romana

unread,
May 23, 2019, 3:57:17 PM5/23/19
to Comunidad de Visual Foxpro en Español
Append from archivo.txt type delited with "|"
Reply all
Reply to author
Forward
0 new messages