Visual Basic - Ayuda Con Vector !!!!!!!!!

Life is soft - evento anual de software empresarial
 
Vista:

Ayuda Con Vector !!!!!!!!!

Publicado por Diego (43 intervenciones) el 11/04/2007 22:04:39
Hola una consulta!!!

Quisiera saber si es posible hacer esto :

Tengo un Vector cargado con 5 elementos

Vector(1) = AAA
Vector(2) = BBB
Vector(3) = CCC
Vector(4) = DDD
Vector(5) = EEE

Durante la ejecución del programa quisiera eliminar un elemento , por ejemplo el elemento correspondiente a la posición 3 y que el vector se redimensione y quede:

Vector(1) = AAA
Vector(2) = BBB
Vector(3) = DDD
Vector(4) = EEE


Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda Con Vector !!!!!!!!!

Publicado por Paco del Barro (8 intervenciones) el 12/04/2007 01:15:06
Si es posible, solo tenes que eliminar el elemento buscado y a continuacion redimensianar el vector para que os quede un elemento menos.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Con Vector !!!!!!!!!

Publicado por Matías Freire (421 intervenciones) el 12/04/2007 18:49:00
hacé lo siguiente:

Dim vector() As String

ReDim vector(1 To 5)

vector(1) = "AAA"
vector(2) = "BBB"
vector(3) = "CCC"
vector(4) = "DDD"
vector(5) = "EEE"

ReDim Preserve vector(1 To 4)

MsgBox vector(UBound(vector))

Recuerda que en el primer " dim vector() as string" no le debes poner la dimension, porque sino luego no te dejará redimensionarlo. O sea, lo creas vacío, lo redimensionas a lo que necesitas, y despues lo volves a redimensionar con la palabra clave "PRESERVE" para que no te elimine los datos. En tu caso, como lo vas a redimensionar a un valor menor, automáticamente te eliminará el item (siempre y cuando lo uqe q
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Corrección

Publicado por Matías Freire (421 intervenciones) el 12/04/2007 19:08:03
El código que yo te mandé te va a servir sólo si quieres eliminar elemntos al final del vector. Si quieres eliminar elementos del medio, deberías hacer lo siguiente:

Option Explicit

Dim vector() As String

Private Sub Command1_Click()
Dim i As Integer

ReDim vector(1 To 5)

vector(1) = "AAA"
vector(2) = "BBB"
vector(3) = "CCC"
vector(4) = "DDD"
vector(5) = "EEE"

Call SacarElemento(3)

For i = LBound(vector) To UBound(vector)
MsgBox vector(i)
Next i

End Sub

Private Sub SacarElemento(ByVal Indice As Integer)
Dim i As Integer
Dim intLimiteNewVector As Integer
Dim NewVector() As String

'verifico que el indice sea válido
If Indice >= LBound(vector) And Indice <= UBound(vector) Then
'Elimino el elemnto deseado del vector original
vector(Indice) = ""

'Redimensiono en 1 un vector nuevo
ReDim NewVector(1 To 1)

'Recorro el vector
For i = LBound(vector) To UBound(vector)
'Si el valor del item es <> de vacio, lo paso a un nuevo vector
If vector(i) <> "" Then
'Pongo en la ultima posicion el valor del vector original
NewVector(UBound(NewVector)) = vector(i)
'Calculo el próximo limite que debe tener el nuevo vector
intLimiteNewVector = UBound(NewVector) + 1
'Le agrego un item más al nuevo vector, preservando los datos ya grabados
ReDim Preserve NewVector(1 To intLimiteNewVector) As String
End If
Next i

'como siempre agrego un item de mas en el nuevo vector, tengo que eliminar el ultimo porque va a estar vacío
If UBound(NewVector) <> 1 Then
ReDim Preserve NewVector(1 To UBound(NewVector) - 1)
End If

'digo que ahora el vector va a ser el newvector
vector = NewVector
End If
End Sub


De todas formas, te recomiendo que para lo que deseas hacer, no existe nada mejor que una collection. Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar