elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Eliminar un elemento en un Array
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Eliminar un elemento en un Array  (Leído 36,419 veces)
edgar_allan

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Eliminar un elemento en un Array
« en: 15 Enero 2009, 14:08 pm »

Hola, Buen Año a todos!!!

tengo una pregunta con respecto a Visual Basic.

estoy tratando de eliminar un elemento de un array ejem:

Dim arrdat(4)
arrdat(0) = "carlos"
arrdat(1) = "fernando"
arrdat(2) = "laura"
arrdat(3) = "manuel"
arrdat(4) = "marina"

para luego eleminar el elemento del array arrdat(1) pero que ahora el array quede con un elemento menos y no del mismo tamaño como era originalmente. entonces quedaría asi:

Dim arrdat(3)
arrdat(0) = "carlos"
arrdat(1) = "laura"
arrdat(2) = "manuel"
arrdat(3) = "marina"

tiene alguna idea de como hacero?


En línea

gulabyte

Desconectado Desconectado

Mensajes: 97



Ver Perfil
Re: Eliminar un elemento en un Array
« Respuesta #1 en: 15 Enero 2009, 18:28 pm »

haz un bucle que te mire los objetos del array uno a uno y si coincide con el nombre que quieres borar que sobreescriba en ese espacio el siguiente nombre y asi consecutivamente....algo como...

Código:
Dim i, j as integer 'Contadores
Dim Nombre As String

For i = 1 To "cantidad de objetos en el array"
    if array(i) = Nombre Then
        for j = 1 to "objetos array - i"
            If not (i+1) > cantidad de objetos en el array then array(i) = array(i+1) else: array(i) = ""
        next j
    end if
next i

asi lo que harías sería encontrar el nombre, y sobreescribir el hueco de ese nombre con el que esta en el siguiente hueco, uno a uno hasta llegar al final... claro que al hacer eso te quedará el último hueco vacío....

espero que te sirva ;D

Mofificado.
PD: Lo de [If not (i+1) > cantidad de objetos en el array] es para que no te de error porque sino al llegar al último sería array(4) = array(5) cuando array(5) no existe.... además si el nombre se repite en la lista te los va borrar todos, ya que después de salir del bucle de "j" sigue el de "i"....para evitarlo podrias poner "exit sub" después del next j.... intenta comprender el código y modifícalo a tu gusto ;D


« Última modificación: 15 Enero 2009, 18:36 pm por gulabyte » En línea

‭‭‭‭jackl007


Desconectado Desconectado

Mensajes: 1.403


[UserRPL]


Ver Perfil WWW
Re: Eliminar un elemento en un Array
« Respuesta #2 en: 16 Enero 2009, 01:00 am »

te doy la idea, y tu lo codeas, es facil...
en principio hay una funcion para cambiarle el numero de elementos del array, recuerdo que hace unos años lo intente y no funciono...
bueno; pero lo que puedes hacer es: como conoces la posicion que quieres eliminar; pues, empiezas a copiar de una posicion adelante de donde vas a empezar a cortar... y con una bifurcacion (if-then), puedes controlar que no haga nada cuando llege a la posicion final, y en ella sobreescriba con "" (cadena vacia..)
de ese modo podrias "correr" los elemntos conociendo la posicion desde donde quieres cortar... claro que no estamos alterando en nada el numero de elementos del array, solo le colocamos al ultimo una cadena vacia...
En línea

seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Eliminar un elemento en un Array
« Respuesta #3 en: 16 Enero 2009, 01:49 am »

es mas que facil...son 4 lineas de codigo...
En línea

LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 760


www.leandroascierto.com


Ver Perfil WWW
Re: Eliminar un elemento en un Array
« Respuesta #4 en: 16 Enero 2009, 02:17 am »

hola te pongo un ejemplo, tenes que redimencionar el array , vos encargate de entenderlo

Código:
Option Explicit
Dim MyArray() As String

Private Sub Command1_Click()
If DeleteItem(5) Then
    ImprimirArray
    MsgBox "El Array tiene " & UBound(MyArray) & " Items"
Else
    MsgBox "El indice esta fuera del intervalo"
End If
End Sub

Private Sub Form_Load()
    Dim i As Long
   
    ReDim MyArray(0)
   
    For i = 0 To 9
        AddItem "Item" & i
    Next
   
    ImprimirArray
   
    MsgBox "El Array tiene " & UBound(MyArray) & " Items"
End Sub


Private Sub AddItem(Text As String)
    Dim Count As Long
    Count = UBound(MyArray)
    MyArray(Count) = Text
    ReDim Preserve MyArray(Count + 1)
End Sub

Private Function DeleteItem(ByVal Index As Long) As Boolean

    Dim i As Long
    Dim Count As Long
    Count = UBound(MyArray)
    If Index <= Count And Index >= LBound(MyArray) Then
        For i = Index To Count - 1
            MyArray(i) = MyArray(i + 1)
        Next
        ReDim Preserve MyArray(Count - 1)
        DeleteItem = True
    End If
End Function

Private Sub ImprimirArray()
    Dim i As Long
    Dim Count As Long
    Count = UBound(MyArray)
    For i = 0 To Count
        Debug.Print MyArray(i)
    Next
End Sub

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Leer elemento a elemento de un fichero
Programación C/C++
eleon 3 3,638 Último mensaje 1 Febrero 2012, 14:06 pm
por eleon
Array me imprime un solo elemento porque?
PHP
itzg3 5 2,992 Último mensaje 19 Abril 2014, 02:26 am
por Pablo Videla
Eliminar las posiciones pares de un array y comprimir el array
Java
sevedeboa 8 14,776 Último mensaje 26 Enero 2015, 15:52 pm
por sevedeboa
[AYUDA]Insertando elemento en un array en python
Scripting
AgnesBlack 5 3,119 Último mensaje 28 Enero 2017, 09:43 am
por PUAROT
Cómo eliminar un elemento de un array dinámico - CONSULTA
Programación C/C++
Cero++ 7 3,990 Último mensaje 12 Diciembre 2018, 17:33 pm
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines