Programación General > Visual Basic 6.0 e inferiores
Re: Ayuda Con Listas Y Matrices
Jero67:
Hola a todos.
Ante todo me presento, soy nuevo en el foro y con ganas de aprender, casi desde 0.
Ahí vá la pregunta, estoy haciendo un programa en VB6 en el cual cojo datos desde un fichero de texto y los introduzco en un TextBox, hasta ahí todo bien, pero ahora lo que intento es contar el numero de lineas dentro de ese TextBox y asignar el valor de cada una de ellas a una variable tipo matriz dinamica ya que el numero de lineas cambiará desde una captura a otra y la matriz creo que se deberá de construir en tiempo real.
Si alguien me puede echar un cable, no quiero que me den la solucion, eso es muy facil, lo que me gustaría es que me encaminaran hacia la respuesta.
Gracias de antemano y un saludo.
Jero67
luciano2:
Bueno te doy un par de pistas de como podés hacerlo
Para poder utilizar un array en forma dinámica, (no podés usar un array fijo por que no conocés la cantidad de líneas a llenar en el array) , a la matriz la tenés que declarar asi:
Dim LaMatriz () As TipoDeDato
... en este caso sería de tipo String
Dim LaMatriz () As String
Para indicar en tiempo de ejecución cual va a ser la dimensión de la misma ( será la cantidad de lineas del textbox) ... lo tenés que ahcer con la instrucción Redim
por ejemplo
Redim LaMatriz (n elementos )
Si la matriz contiene datos antes de resdimensionarla, (para no perder los datos), como en el caso anterior, se agrega a la instrucción Redim la palabra Preserve
redim Preserve LaMatrix(nElementos)
... esto depende de lo que quieras hacer, si te importa o no perder los datos o mantenerlos
Ahora , para poder obtener todas las lineas del textbox, podés usar una función llamada Split. Esta función te devuelve un array con los elementos de una variable ( en este caso la variable es el textbox con las lineas) , y te separa las mismas mediante el delimitador que le indiques. En este caso el delimitador es el caracter de salto de carro ( vbCrlf o VbNewLine)
por ejemplo, en este array se llena con todas las lineas de un text1 ( obviamente el TBox con la propiedad MultiLine )
'Array dinámico
Dim Lineas() As String
' Llena el array
Lineas = Split(text1.Text, vbNewLine)
Ahora para poder recorrer los elementos dentro del vector, lo podés ahcer en un for next desde el primer elemento hasta el último. usando LBound y Ubound
ej:
--- Código: Text --- Dim Lineas() As String Lineas = Split(Text1.Text, vbNewLine) Dim i As Integer 'RecorreFor i = LBound(Lineas) To UBound(Lineas) ' Muestra el valor MsgBox Lineas(i) Next
saludos
Jero67:
OK, muchas gracias Luciano2, me pongo manos a la obra y ya te cuento como sale el engendro :whistling: , pero mañana que ahora ya es tarde y me voy a dormir un rato.
Gracias de nuevo. :hola:
Jero67:
Hola de nuevo luciano2.
Ya tengo preparadito el codigo y ahora me toca seguir a mí, iré practicando y adaptando lo que me has pasado hasta hacer lo que quiero que haga el programa.
Un par de preguntas para quien me pueda responder:
1ª - Para optimizar el código cual de las dos formas de hacer lo mismo sería la mas rápida:
vbNewLine
o
Chr(13) + Chr(10)
2ª - Una vez creada la matriz dinamica y puesto que no necesito los datos en la proxima captura, con la instruccion "Redim LaMatriz(n)" eliminaría todo rastro de los datos anteriores, ¿no?
Un saludo
arielb:
--- Citar ---Bueno te doy un par de pistas de como podés hacerlo
--- Fin de la cita ---
:blink: bueno no sé pero me parece que no fue una pista si no la solucion lo que le diste :D ;) :whistling:
Navegación
[#] Página Siguiente
Ir a la versión completa