Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Programa separador

Estas en el tema de Programa separador en el foro de Visual Basic clásico en Foros del Web. Hola a todos, estoy haciendo un proyecto que permita separar apellido paterno, materno, nombre1, nombre2, email y telefono a través de algún caracter separador (.,; ...
  #1 (permalink)  
Antiguo 13/11/2009, 11:02
 
Fecha de Ingreso: mayo-2007
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Programa separador

Hola a todos, estoy haciendo un proyecto que permita separar apellido paterno, materno, nombre1, nombre2, email y telefono a través de algún caracter separador (.,; etc)

Ya tengo algo programado pero aun no puedo hacer que funcione del todo si alguien pudiera ayudarme con mi código estaría muy agradecido.

Ojo si ven cosas sin sentido comprendan que soy novato en esto del VB por eso vengo en su ayuda.

Código:
Dim total, letra, a, cont, x, pos As Integer
Private Sub out_Click()
End
End Sub

Private Sub sep_Click()
total = Len(texto) 'chr para convertir un caracter a asci
letra = Asc(separador)
For x = 1 To Len(texto)
a = Asc(Mid(texto, x, 1))
Select Case texto
Case 0
If Mid(total, x, 1) = " " Then
texto = 1
Else
nombre = Mid(texto, x, 1) & nombre
End If
Case 1
If Mid(texto, x, 1) = " " Then
texto = 2
Else
nombre2 = Mid(texto, x, 1) & nombre2
End If
Case 2
If Mid(texto, x, 1) = " " Then
texto = 3
Else
paterno = Mid(texto, x, 1) & paterno
End If
Case 3
If Mid(texto, x, 1) = " " Then
texto = 4
Else
materno = Mid(texto, x, 1) & materno
End If
Case 4
If Mid(texto, x, 1) = " " Then
texto = 5
Else
correo = Mid(texto, x, 1) & correo
End If
Case 5
tel = Mid(texto, x, 1) & tel
'If a = letra Then
'cont = cont + 1
'End If
End Select
Next
'resultado = cont
'cont = 0
End Sub
Private Sub separador_Change()
If texto <> "" And separador <> "" Then
sep.Enabled = True
Else
sep.Enabled = False
End If
End Sub

Private Sub texto_Change()
If texto <> "" And separador <> "" Then
sep.Enabled = True
Else
sep.Enabled = False
End If
End Sub
  #2 (permalink)  
Antiguo 13/11/2009, 12:48
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Programa separador

Creo que mejor si pruebas así:
Suponiendo que tienes el texto en un textbox llamado texto y el separador en un textbox llamado separador:

Código :
Ver original
  1. Private Sub Sep_Click()
  2.   Dim matriz() As String
  3.   matriz = Split(Texto, Separador)
  4.   nombre=matriz(0)
  5.   nombre2=matriz(1)
  6.   Paterno=matriz(2)
  7.   Materno=matriz(3)
  8. etc...
  9.  
  10. End Sub

Última edición por pkj; 13/11/2009 a las 14:34 Razón: me sobraba un Dim f
  #3 (permalink)  
Antiguo 13/11/2009, 18:02
 
Fecha de Ingreso: mayo-2007
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Respuesta: Programa separador

La variable Texto corresponde a un textbox donde se introduce, los datos. (nombre,apellido,apellido,correo,email)

El separador se introduce en otro textbox (, ó ; ó . etc)

Tengo un boton que al presionar me separe todo de la variable texto y me lo muestre en 6 labels.

Se supone que debes de ingresar la cadena y en el otro textbox el separador, cuando presiones el boton separar lea la cadena y al encontrar el separador que se haya proporcionado te meta la parte de la cadena que a leido en un label, luego que continue leyendo la cadena hasta el siguiente separador y que te lo vuelva a meter en otro label y asi hasta concluir con la cadena.

Gracias por responder.
  #4 (permalink)  
Antiguo 13/11/2009, 19:06
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Programa separador

Si ya lo has solucionado olvida este mensaje. Es que creo entender que sigues con problemas.

Si tienes que hacerlo usando mid, left, etc... porque es un ejercicio de prácticas o algo así y el fin del tema es que practiques con eso o los bucles o lo que sea, me lo comentas y olvidamos este mensaje.

Si solo quieres hacerlo y no importa como, te pongo el código del boton:

Tenemos un textbox con el texto y otro con el separador.
Los textbox no se como se llaman, ya que me hablas de variables texto y separador.
Para usar los nombres comunes llamare al textbox que contiene el texto "Text1" y al del separador "Text2"
Los labels son 6, asi que serán Label1, Label2, etc...
El botón separar imagino que se llama Sep.

Solo hay que retocar la sub.

Código :
Ver original
  1. Private Sub Sep_Click()
  2.   Dim matriz() As String
  3.   matriz = Split(Text1.Text, Text2.Text)
  4.   Label1.Caption=matriz(0)
  5.   Label2.Caption=matriz(1)
  6.   Label3.Caption=matriz(2)
  7.   Label4.Caption=matriz(3)
  8.   Label5.Caption=matriz(4)
  9.   Label6.Caption=matriz(5)
  10.  End Sub

Última edición por pkj; 13/11/2009 a las 19:13 Razón: retocar
  #5 (permalink)  
Antiguo 13/11/2009, 21:16
 
Fecha de Ingreso: mayo-2007
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Respuesta: Programa separador

No para nada solo que utilizaba esos metodos por que son los que mas o menos manejo pero esta bien como sea.

Gracias por tu tiempo de ante mano.

He intentado hacerlo como tu dices pero me tira un error: Copile error: method or data member not found

el codigo lo tengo asi:

Dim matriz() As String
Private Sub out_Click()
End
End Sub

Private Sub sep_Click()
matriz = Split(texto.Text, separador.Text)
nombre.Caption = matriz(0)
nombre2.Caption = matriz(1)
paterno.Caption = matriz(2)
materno.Caption = matriz(3)
correo.Caption = matriz(4)
tel.Caption = matriz(5)
End Sub

Private Sub separador_Change()
If texto <> "" And separador <> "" Then
sep.Enabled = True
Else
sep.Enabled = False
End If
End Sub

Private Sub texto_Change()
If texto <> "" And separador <> "" Then
sep.Enabled = True
Else
sep.Enabled = False
End If
End Sub
  #6 (permalink)  
Antiguo 13/11/2009, 21:38
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Programa separador

Lo he creado y a mi me funciona bien. No se que puede ser. Quizá tu vb no conoce el split??.
¿en que linea da el error?
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #7 (permalink)  
Antiguo 13/11/2009, 21:52
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Programa separador

Si no lo consigues prueba esta sub en el boton

Código :
Ver original
  1. Private Sub sep_Click()
  2. Dim contador As Integer
  3. Dim f As Integer
  4. ReDim matriz(5)
  5. For f = 1 To Len(Texto.Text)
  6.   If Mid$(Texto.Text, f, 1) <> separador.Text Then
  7.     matriz(contador) = matriz(contador) & Mid$(Texto.Text, f, 1)
  8.   Else
  9.     contador = contador + 1
  10.   End If
  11. Next f
  12. nombre.Caption = matriz(0)
  13. nombre2.Caption = matriz(1)
  14. paterno.Caption = matriz(2)
  15. materno.Caption = matriz(3)
  16. correo.Caption = matriz(4)
  17. tel.Caption = matriz(5)
  18. End Sub
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!

Última edición por pkj; 13/11/2009 a las 21:58
  #8 (permalink)  
Antiguo 13/11/2009, 23:46
 
Fecha de Ingreso: mayo-2007
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Respuesta: Programa separador

Pues sigue marcandome error con ambos codigos te dejo una captura para que veas que es lo que me marcar:

img682. imageshack. us /i /errornu. jpg/


Crees que sea por que lo estoy corriendo desde un Visual Basic portable? He creado otros 2 programas con el y no me habia marcado ningun problema hasta ahora.
  #9 (permalink)  
Antiguo 14/11/2009, 00:24
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Programa separador

te dice que el objeto correo no tiene propiedad caption

correo no es un objeto label

mira sus propiedades

son las cosas que notas al usar los controles bien.
si quitas los .caption que hay te funcionara como siempre, pero el label del correo no se llama correo y tu no lo sabias
Y si encima no tienes activado option explicit se crea una variable correo y no te enteras y el label nunca cambia y te vuelves loco buscando el fallo.

o igual es una variable que despues se pasa al label adecuado y funciona pero no sabes como

o a saber...

PD:con usar bien los controles me refiero a incluir la propiedad que quieres usar aunque sea la propiedad por defecto, como pasa con los textbox, que no se suele añadir el .text
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!

Última edición por pkj; 14/11/2009 a las 00:37
  #10 (permalink)  
Antiguo 14/11/2009, 09:38
 
Fecha de Ingreso: mayo-2007
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Respuesta: Programa separador

Ya capte el error que tenia.

Los ultimos dos label (correo y telefono)si tenian bien sus nombres pero por algo extraño me los marcaba como: Private Sub correo_Click()(Index As Integer)

Muchisimas gracias por tu ayuda "pkj" creo que me estaba complicando yo solo las cosas con el uso de Len, Mid y CHR para hacer este programita.

Gracias por tu tiempo y la ayuda.

Saludos!
  #11 (permalink)  
Antiguo 15/11/2009, 03:02
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Programa separador

Ya veo que te estabas liando a base de bien, pero así es como todos empezamos en este mundillo.

El motivo de que los 2 utimos labels te añadan (index as integer) es porque has debido usar copiar/pegar con el label "correo" para crear el label "telefono" y al hacerlo has creado una matriz de labels a partir del label "correo", o has escrito a mano un valor en sus propiedades index creando matrices de 1 elemento label.
Imagino que lo has notado y borrado el valor index o has eliminado y creado de nuevo los labels. De otro modo seguirás teniendo el fallo y necesitarás usarlos como Correo(0) y telefono(0)... o telefono(1) segun el fallo que cometieses al crearlos.

Si tienes más problemas aquí andaremos.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #12 (permalink)  
Antiguo 15/11/2009, 14:47
 
Fecha de Ingreso: mayo-2007
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Respuesta: Programa separador

Ya veo, asi es he borrado los labels y los volvi a crear uno por uno y me corrio sin problema.

Como ultima molestia podrias explicarme para que entienda este pedazo del código por favor, todavia no me queda muy claro eso de Mid y Len:


For f = 1 To Len(Texto.Text)
If Mid$(Texto.Text, f, 1) <> separador.Text Then
matriz(contador) = matriz(contador) & Mid$(Texto.Text, f, 1)
  #13 (permalink)  
Antiguo 16/11/2009, 00:16
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Programa separador

Es muy básico

Hacemos un bucle asignando a f los valores desde 1 hasta la longitud del texto
For f = 1 To Len(Texto.Text)

Nota: Se supone que el separador no va a tener una longitud mayor que 1 carácter. Si quieres usar un separador de varios caracteres habría que adaptarlo.

If Mid$(Texto.Text, f, 1) <> separador.Text Then
si el carácter de la posición f del texto no es un carácter separador...

lo vamos pegando en el elemento actual de la matriz manteniendo el contenido anterior del elemento
matriz(contador) = matriz(contador) & Mid$(Texto.Text, f, 1)

Espero que se entienda.

Saludos
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #14 (permalink)  
Antiguo 16/11/2009, 09:55
 
Fecha de Ingreso: mayo-2007
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Respuesta: Programa separador

Muchas gracias de nuevo por la clase de VB, duda resuelta.

Saludos!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:37.