Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:

Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro


ABRIR UN ARCHIVO TXT

Aqui programadores en la plataforma Win32 con Visual C++ de Microsoft...

Moderador: latindeveloper

ABRIR UN ARCHIVO TXT

Notapor mgliljeipn el Lun Sep 17, 2007 3:40 pm

Como estan todos, les mando un cordial saludo, espero me puedan ayudar con mi problema:


tengo que cargar un archivo .TXT, con la siguiente estructura


xxxxxxxxxxxxxxxxxxJUAN PEREZ PRIETO XXXXXXXXXXXXXXXXX

ESTO LO VENIA HACIENDO CON LA FUNCION .Mid y la coordenada de la palabra y su longitud que queria leer, ahora el problema es abrir y leerlo sin importar la longitud del nombre, pues este puede variar.

gracias por su ayuda,
mgliljeipn
Novato
Novato
 
Mensajes: 16
Registrado: Lun Ago 13, 2007 9:45 am

Re: ABRIR UN ARCHIVO TXT

Notapor ivancp el Mar Sep 18, 2007 10:50 am

Cuales son esas variaciones? tiene que ver con espacios? mayusculas? otros caracteres entre los nombres....¿?
ivancp
Programador Experimentado
Programador Experimentado
 
Mensajes: 371
Registrado: Jue Sep 06, 2007 12:57 pm

Respuesta

Notapor mgliljeipn el Mar Sep 18, 2007 10:55 am

las variaciones son los espacios en este caso, pues la longitud del nombre puede variar, lo he intentado hacer con expresiones regulares para extraer el nombre y cada uno de los apellidos, pero soy nuevo en esto de la programacion y se me dificulta con las expresiones, estos datos van en tres edit box distintos (uno para nombre,y uno para cada apellido)

te agradezco el tiempo que me brindas,
mgliljeipn
Novato
Novato
 
Mensajes: 16
Registrado: Lun Ago 13, 2007 9:45 am

Re: Respuesta

Notapor ivancp el Mar Sep 18, 2007 11:05 am

En este enlace http://www.codeproject.com/cpp/rexsearch.asp hay un articulo sobre la implementacion de una Clase, que te permite buscar en archivos alguna expresion regular.

Para buscar tu nombre sería algo asi como:

Código: Seleccionar todo
[J][U][A][N][\  ]+[P][E][R][E][Z][\  ]+


espacio en blanco: "\ "
espacio en blanco una o mas veces: "[\ ]+"
ivancp
Programador Experimentado
Programador Experimentado
 
Mensajes: 371
Registrado: Jue Sep 06, 2007 12:57 pm

Respuesta

Notapor mgliljeipn el Mar Sep 18, 2007 11:35 am

gracias Ivancp, nada mas una pregunta, en este caso solo sirve para el nombre JUAN, pero este dato puede cambiar en ese caso seria cualquier caracter alfabetico entre espacios, eso corresponderia al nombre,

la idea que tengo y aun no puedo hacer es que busque desde el inicio de la palabra hasta encontrar el primer espacio, eso corresponde a nombre, despues la siguiente palabra corrspondida entre espacios (apellido paterno) y la tercera entre espacio y final de oracion (apellido materno o segundo apellido) esa es la idea general, pero no se como crearla en expresion regular, si me pudieras ayudar te lo agradeceria,
mgliljeipn
Novato
Novato
 
Mensajes: 16
Registrado: Lun Ago 13, 2007 9:45 am

Re: Respuesta

Notapor ivancp el Mar Sep 18, 2007 11:43 am

Si te tomas un tiempo para leer el articulo podras notar eso es posible si utilizas la sintaxis para ese tipo de busqueda.

por ejemplo para buscar cualquier palabra:

[A-Za-z]+[\ ]+[A-Za-z]+

Eso va a buscar dos palabras que tenga por lo menos un espacio entre cada una y que la palabra tenga por lo menos una letra.
ivancp
Programador Experimentado
Programador Experimentado
 
Mensajes: 371
Registrado: Jue Sep 06, 2007 12:57 pm

Gracias

Notapor mgliljeipn el Mié Sep 19, 2007 10:00 am

Gracias, me ayudo lo del RegEx, una pregunta mas la funcion InStr, como se utiliza, me han comentado que con esta funcion se puede localizar la posicion del primer espacio en mi caso, peor no reconocce la funcion el codigo que escribi es el siguiente:


posnom = InStr(Nombre," ");


donde

posnom es una variable de tipo entero, Nombre es la cadena del nombre completo en la que quiero buscar el " ",
el error me dice que InStr es una identificacion no declarada

gracias
mgliljeipn
Novato
Novato
 
Mensajes: 16
Registrado: Lun Ago 13, 2007 9:45 am

Re: Gracias

Notapor ivancp el Mié Sep 19, 2007 2:03 pm

El codigo sería algo asi:

Código: Seleccionar todo
CString Nombre = "ALGUN NOMBRE";
int posision = Nombre.Find(" ");
ivancp
Programador Experimentado
Programador Experimentado
 
Mensajes: 371
Registrado: Jue Sep 06, 2007 12:57 pm

GRACIAS!!!!!!!!!

Notapor mgliljeipn el Mié Sep 19, 2007 3:52 pm

ya quedo, precisamente con el Find, muchas gracias, :D ,
mgliljeipn
Novato
Novato
 
Mensajes: 16
Registrado: Lun Ago 13, 2007 9:45 am


Volver a Visual C++

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados