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

Separar una cadena en dos partes

Estas en el tema de Separar una cadena en dos partes en el foro de Visual Basic clásico en Foros del Web. Tengo una cadena separada por una coma necesito hacerla en dos partes por ejemplo: demo,demo22 necesito cargar esas dos en dos campos de texto distintos ...
  #1 (permalink)  
Antiguo 21/07/2008, 15:59
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
De acuerdo Separar una cadena en dos partes

Tengo una cadena separada por una coma necesito hacerla en dos partes por ejemplo:

demo,demo22

necesito cargar esas dos en dos campos de texto distintos ejemplo.

demo

demo22

alguien me podria decir como cortar una cadena.

*************

Y otra pregunta como se cuando un checkbox esta seleccionado o no lo esta?

Saludos y muchas gracias por la ayuda
__________________
Si la vida te da la espalda tocale el culo
  #2 (permalink)  
Antiguo 21/07/2008, 16:08
Avatar de Kruzado  
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 2 meses
Puntos: 17
Respuesta: Separar una cadena en dos partes

1)

cadena="demo,demo22"
x=instr(cadena,",")
cadena1=mid(cadena,1,x)
cadena2=mid(cadena,x)

2) revisa la propiedad value, cuando es 1 esta checkeado, cando es 0 no
  #3 (permalink)  
Antiguo 21/07/2008, 16:15
Avatar de Jhonnyf  
Fecha de Ingreso: septiembre-2007
Ubicación: Dentro de mi
Mensajes: 87
Antigüedad: 16 años, 7 meses
Puntos: 5
Respuesta: Separar una cadena en dos partes

Dim strCadena as String
Dim intPos As Integer
Dim Texto1 As String
Dim Texto2 As String
strCadena="Hola,Mundo"

intPos = InStr(1, strCadena, ",") 'posicion de la ","
Texto1 = Mid(strCadena, 1, intPos - 1) 'Extraemos desde el inicio hasta la posicion de la coma -1
Texto2 = Mid(strCadena, intPos + 1) 'Extramos desde la posicion de la coma + 1 hasta el final

*******************************************
if Check1.Value= 1 then 'si es 0 entonces no esta selecionado
' checkbox esta selecionado
end if
__________________
*en construccion*
  #4 (permalink)  
Antiguo 21/07/2008, 17:22
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Respuesta: Separar una cadena en dos partes

pero es que siempre me da 1 este chekeado o no :S cosa rara no?

gracias por las respuestas!
__________________
Si la vida te da la espalda tocale el culo
  #5 (permalink)  
Antiguo 21/07/2008, 17:27
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Respuesta: Separar una cadena en dos partes

Lo de separar me funciona perfectamente pero no se por que el sugundo me mete caracteres raros al final cuando no los hay en el archivo, mete como dos rayas algo asi.

demo22||

*******

asi es como leo el .ini que creo.

Cita:
Open "\eko.ini" For Input As #1

Dim Linea As String, Total As String
Do Until EOF(1)
Line Input #1, Linea
Total = Total + Linea + vbCrLf
Loop
Close #1


por que puede ser? Gracias
__________________
Si la vida te da la espalda tocale el culo

Última edición por freedatos; 21/07/2008 a las 17:36
  #6 (permalink)  
Antiguo 21/07/2008, 17:31
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Separar una cadena en dos partes

Es posible que haya en el archivo, solo que con un editor de texto normal no lo estás viendo, es probable que sea uno de los caracteres de control. Abre con un editor binario y verás, los puedes sacar usando Left...
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 21/07/2008, 17:45
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Respuesta: Separar una cadena en dos partes

Como podria sacarlos? es que soy nuevo en VB6 disculpen mi inorancia :S
__________________
Si la vida te da la espalda tocale el culo
  #8 (permalink)  
Antiguo 21/07/2008, 20:23
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Respuesta: Separar una cadena en dos partes

Cita:
Iniciado por Jhonnyf Ver Mensaje
Dim strCadena as String
Dim intPos As Integer
Dim Texto1 As String
Dim Texto2 As String
strCadena="Hola,Mundo"

intPos = InStr(1, strCadena, ",") 'posicion de la ","
Texto1 = Mid(strCadena, 1, intPos - 1) 'Extraemos desde el inicio hasta la posicion de la coma -1
Texto2 = Mid(strCadena, intPos + 1) 'Extramos desde la posicion de la coma + 1 hasta el final

end if
y en el caso de que fueran 3 comas 3 partes?
__________________
Si la vida te da la espalda tocale el culo
  #9 (permalink)  
Antiguo 22/07/2008, 01:23
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Separar una cadena en dos partes

Hola,

para estos casos yo prefiero utilizar la función Split que devuelve un array con cada una de las palabras entre el delimitador indicado.

En este ejemplo leemos un archivo de texto en el cual las palabras están separadas por comas y las mostramos en un control ListBox:


Código:
 Dim s As String, a() As String, i As Integer
    ' abrimos el fichero y lo cargamos en la variable "s"
    Open App.Path & "\Archivo.ini" For Input As #1
    s = Input(LOF(1), #1)
    Close #1
    ' cargamos cada una de las palabras en el array "a()"
    a = Split(s, ",")
    ' y agregamos las palabras al listBox
    For i = LBound(a) To UBound(a)
        List1.AddItem a(i)
    Next i
  #10 (permalink)  
Antiguo 22/07/2008, 01:32
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Respuesta: Separar una cadena en dos partes

pero es que lo que guardo en el ini es user y pass para ser recordados. Creo que el problema de las rallitas los signos esos que salen es por que mete un salto de linea pero no se por que como lo podria quitar?

muestro en la imagen las rallitas sospechosas


gracias
__________________
Si la vida te da la espalda tocale el culo
  #11 (permalink)  
Antiguo 22/07/2008, 01:40
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Separar una cadena en dos partes

Cita:
Iniciado por freedatos Ver Mensaje
pero es que lo que guardo en el ini es user y pass para ser recordados. Creo que el problema de las rallitas los signos esos que salen es por que mete un salto de linea pero no se por que como lo podria quitar?


gracias
¿Con el ejemplo que puse, también salen las rallitas?

  #12 (permalink)  
Antiguo 22/07/2008, 02:13
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Respuesta: Separar una cadena en dos partes

si tio tambien :S salen las rallitas. ¿de que puede ser?

Gracias por vuestro interes!
__________________
Si la vida te da la espalda tocale el culo
  #13 (permalink)  
Antiguo 22/07/2008, 02:48
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Separar una cadena en dos partes

Cita:
Iniciado por freedatos Ver Mensaje
si tio tambien :S salen las rallitas. ¿de que puede ser?

Gracias por vuestro interes!
Prueba cargando el array de esta forma:

Código:
Do While Not EOF(1)
        Line Input #1, s
        If s <> "" Then
            a = Split(s, ",")
        End If
    Loop
y en todo caso, puedes eliminar los caracteres extraños del último elemento de la matriz así:

a(UBound(a)) = Left(a(UBound(a)), Len(a(UBound(a))) - 2)

suponiendo que son dos las rallitas.

  #14 (permalink)  
Antiguo 22/07/2008, 06:52
Avatar de Jhonnyf  
Fecha de Ingreso: septiembre-2007
Ubicación: Dentro de mi
Mensajes: 87
Antigüedad: 16 años, 7 meses
Puntos: 5
Respuesta: Separar una cadena en dos partes

Cita:
Iniciado por freedatos Ver Mensaje
y en el caso de que fueran 3 comas 3 partes?
Código:
Dim strCadena as String
Dim intPos As Integer
Dim Texto1 As String
Dim Texto2 As String
Dim Texto3 as String
strCadena="Hola,Mundo, hello word"


intPos = InStr(1, strCadena, ",") 'posicion de la ","
Texto1 = Mid(strCadena, 1, intPos - 1) 'Extraemos desde el inicio hasta la posicion de la coma -1
strCadena = Mid(strCadena, intPos + 1) 'Extramos desde la posicion de la coma + 1 hasta el final

intPos = InStr(1, strCadena, ",") 'posicion de la ","
Texto2 = Mid(strCadena, 1, intPos - 1)
Texto3 = Mid(strCadena, intPos + 1)
Lo ideal seria pasarle la cadena a una función y que esta te devuelva una matriz.
__________________
*en construccion*
  #15 (permalink)  
Antiguo 22/07/2008, 09:41
Avatar de Kruzado  
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 2 meses
Puntos: 17
Respuesta: Separar una cadena en dos partes

muchas vueltas para lo mismo....
las famosas rayitas a las que se refiere freedatos en la representacion del enter en el text box, si quieres sacarlo antes de utilizar tu variable cadena puedes declarar lo siguiente

cadena=replace(cadena,chr(13)," ")

eso te reemplaza las famosas rayitas que por lo general van al final porque utilizas el enter para moverte de texto en texto



ahora en cuanto a los check, la propiedad value esta en verdadero cuando esta tickeado y en falso cuando no.... entonces si quieres controlar si esta tickeado o no solo pregunta :

if check1.value then
si esta seleccionado me hace toda esta parafernalia
else
si no lo esta no hago na'
end if

la otra duda, como hacerlo cuando exista mas de una coma?, piensa en usar el split...... y revisa documentate y estudia muchacho!!!!!!

ya cabros.... a seguir....
  #16 (permalink)  
Antiguo 22/07/2008, 16:45
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 10 meses
Puntos: 7
Recomendaciones

Hola!

Hazle caso a Kruzado, pero utiliza Replace así:

cadena = Replace(cadena, vbCrLf, "")

vbCrLf equivale a concatenar Chr(10) (salto de línea) con Chr(13) (retorno de carro), que son los dos caracteres que te muestra "falsos" porque al leer el fichero estás concatenándolo al final de cada línea leída:

Código:
Open "\eko.ini" For Input As #1

Dim Linea As String, Total As String
    Do Until EOF(1)
        Line Input #1, Linea
        Total = Total & Linea & vbCrLf  ' Cuando lee la última línea, te concatena
                                        ' esto también, así que puedes controlarlo
                                        ' aquí o a posteriori con Replace; por cierto,
                                        ' para concatenar usa el ampersand (&)
                                        ' en lugar de +
    Loop
    Close #1
Para dividir líneas, utiliza siempre Split, que es más rápida, aunque si vas a coger el principio o el final de una cadena, utiliza Left o Right, en lugar de Mid. Se leen mejor y están optimizadas para esa funcionalidad.

Respecto a las CheckBoxes, la propiedad Value devuelve 0, 1 ó 2, respectivamente vbUnchecked, vbChecked o vbGrayed, te recomiendo comparar siempre contra esas constantes, salvo que quieras hacer algún truquillo
__________________
wile sona li mute e sona

Última edición por Txoco; 22/07/2008 a las 16:58 Razón: Maqueo del código
  #17 (permalink)  
Antiguo 22/07/2008, 17:57
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Respuesta: Separar una cadena en dos partes

Muchisimas gracias por vuestra ayuuda! gracias! lo que no me esta trabajando es lo del checkbox aun no me hace caso y no entiendo por que :S
__________________
Si la vida te da la espalda tocale el culo
  #18 (permalink)  
Antiguo 22/07/2008, 20:54
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Respuesta: Separar una cadena en dos partes

Pues amigos siempre entra al 1º apartado del IF este o no seleccionado :S

Cita:
if check1.value then
si esta seleccionado me hace toda esta parafernalia
else
si no lo esta no hago na'
end if
ese if lo pongo en el boton, que puede pasar?

Gracias!
__________________
Si la vida te da la espalda tocale el culo
  #19 (permalink)  
Antiguo 22/07/2008, 21:10
Avatar de Jhonnyf  
Fecha de Ingreso: septiembre-2007
Ubicación: Dentro de mi
Mensajes: 87
Antigüedad: 16 años, 7 meses
Puntos: 5
Respuesta: Separar una cadena en dos partes

Cita:
Iniciado por freedatos Ver Mensaje
Pues amigos siempre entra al 1º apartado del IF este o no seleccionado :S



ese if lo pongo en el boton, que puede pasar?

Gracias!
que raro... acabo de abrir un nuevo proyecto, pegue un Checkbox y un boton y le puse este codigo dentro del boton

Código:
If Check1.Value Then
    MsgBox "si"
Else
    MsgBox "no"
End If
y me trabaja perfectamente......
__________________
*en construccion*
  #20 (permalink)  
Antiguo 22/07/2008, 23:05
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Respuesta: Separar una cadena en dos partes

Si cierto funciona pero mirad este es mi codigo ( Mi IF )

Cita:
If Check1.Value Then

Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile(ekodata, True)
a.writeline eusuario & "," & eclave

Else



Set Fso = CreateObject("Scripting.FileSystemObject")
If (Fso.FileExists(ekodata)) Then

Kill ekodata

End If

' ***** FIN DE LA COMPROBACION

End If
Siempre entra al primero este o no seleccionado y el objeto CheckBox se llama Check1 es correcto :S

Gracias
__________________
Si la vida te da la espalda tocale el culo
  #21 (permalink)  
Antiguo 23/07/2008, 06:55
Avatar de Jhonnyf  
Fecha de Ingreso: septiembre-2007
Ubicación: Dentro de mi
Mensajes: 87
Antigüedad: 16 años, 7 meses
Puntos: 5
Respuesta: Separar una cadena en dos partes

en donde tienes ese codigo???... en que Rutina?
__________________
*en construccion*
  #22 (permalink)  
Antiguo 23/07/2008, 06:56
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: Separar una cadena en dos partes

Intenta ejecutar paso a paso para saber cuál parte del código está ejecutando. Quizás esté ejecutando y no te des cuenta, ¿En qué función estás colocando eso?.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #23 (permalink)  
Antiguo 23/07/2008, 10:06
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 10 meses
Puntos: 7
Respuesta: Separar una cadena en dos partes

Agrega esta función a tu formulario:

Código:
Private Sub Check1_Click()
    Call MsgBox("Check1.Value = " & Check1.Value & vbCrLf & "Comparación booleana = " & IIf(Check1.Value, True, False))
End Sub
Y entonces, si cuando marcas o desmarcas el checkbox no te sale un mensaje indicándote el estado después de pulsar, mal rollo...

Si funciona bien, copia la línea del MsgBox que te he puesto arriba justo antes del If que nos has puesto en el fragmento de código y ejecútalo, te saldrá el mismo mensaje diciéndote cómo está el checkbox justo antes de hacer la comparación. Compara el contenido del mensaje con el estado real del checkbox, a ver si así sale el duende.
__________________
wile sona li mute e sona
  #24 (permalink)  
Antiguo 23/07/2008, 13:10
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Respuesta: Separar una cadena en dos partes

eso lo tengo en el boton

Command1_Click()


Txoco tu funcion siempre me da verdadero, este o no marcado el Check1 :(
__________________
Si la vida te da la espalda tocale el culo
  #25 (permalink)  
Antiguo 23/07/2008, 13:22
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Respuesta: Separar una cadena en dos partes

ENCONTRE EL PROBLEMAAAAAAAAAAAAAAAAAAAAAAAAAA uffff

era que antes de el if comprobaba el login y si era correcto entraba dentro donde se contraba el if pero tambien esto:

final.Show

que estaba por delante del if y no llegaba hacerlo :S juasssss

sin comentariosssss

Gracias chicos por la ayuda prestada muy amables todos.!
__________________
Si la vida te da la espalda tocale el culo
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 09:34.