none
Se puede redimensionar un array de dos dimensiones? RRS feed

  • Pregunta

  • Alguien me puede responder si se puede redimensionar un array de dos dimensiones, esque estoy varado con este tema, si no se puede ya probare de otra forma. GRacias

    miércoles, 12 de enero de 2011 11:46

Respuestas

  • Hola Aldola, según tengo entendido lo podrías realizar con la instrucción ReDIM.

    Ejemplo:

    Si tu arreglo se llama arregloDatos, podrías escribir lo siguiente:

    'supongamos que lo has inicializado de la siguiente manera

    Dim arregloDatos(20,20) as Integer


    'Ahora lo vamos a llevar a 20 filas y 40 columnas

    ReDIM PRESERVE arregloDatos(20,40)


    Ahora bien, ten mucho cuidado con agregar la palabra PRESERVE, porque de manera predeterminada (sin este modificador), el ReDIM redimensiona los arreglos y asigna los valores por defecto a cada uno de los elementos del mismo. En este ejemplo, si no usas PRESERVE, todos los elementos quedarían en 0 (cero). Lo que hace el modificador PRESERVE es mantener tus datos ya cargados y copiarlos en el nuevo arreglo (que llevará el mismo nombre que el anterior), salvo que hagas un ReDIM en menos, o sea, que achiques tu arreglo, en cuyo caso perderías tantas filas como la diferencia entre el tamaño original y el nuevo.

    Por otra parte, estoy completamente de acuerdo con Leandro (que es el verdadero experto en esto) de usar Listas Genéricas en vez de arreglos.


    Espero te sirva mi respuesta.


    Saludos!


    Gustavo Echenique Mir
    miércoles, 12 de enero de 2011 20:57

Todas las respuestas

  • hola

    no has evaluado reemplazar el array por colecciones algo mejores?

    me refiero quizas a las listas genericas

    si estas suando VS2005 o superior podrias hacerlo, es ams para lograr als dos dimensiones podrias crrar una lista dentro de otra

    uan lista se declararia como ser

    Dim lista As New List(Of String)

    y esta no hace falta redimensioanr porque los items los agregas dinamicamente por medio del add

    lista.Add("Andres")

    lista.Add("Miguel")

     

    para ahcer de dos dimensiones usarias

    Dim lista As New List(Of List(Of String))

    o sea una lista dentro de otra

    creo que esta tecncia es mucho mejor que usar los array que simpre son tan complicados cuando necesitas variar su contenido

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 12 de enero de 2011 11:54
  • Hola Aldola, según tengo entendido lo podrías realizar con la instrucción ReDIM.

    Ejemplo:

    Si tu arreglo se llama arregloDatos, podrías escribir lo siguiente:

    'supongamos que lo has inicializado de la siguiente manera

    Dim arregloDatos(20,20) as Integer


    'Ahora lo vamos a llevar a 20 filas y 40 columnas

    ReDIM PRESERVE arregloDatos(20,40)


    Ahora bien, ten mucho cuidado con agregar la palabra PRESERVE, porque de manera predeterminada (sin este modificador), el ReDIM redimensiona los arreglos y asigna los valores por defecto a cada uno de los elementos del mismo. En este ejemplo, si no usas PRESERVE, todos los elementos quedarían en 0 (cero). Lo que hace el modificador PRESERVE es mantener tus datos ya cargados y copiarlos en el nuevo arreglo (que llevará el mismo nombre que el anterior), salvo que hagas un ReDIM en menos, o sea, que achiques tu arreglo, en cuyo caso perderías tantas filas como la diferencia entre el tamaño original y el nuevo.

    Por otra parte, estoy completamente de acuerdo con Leandro (que es el verdadero experto en esto) de usar Listas Genéricas en vez de arreglos.


    Espero te sirva mi respuesta.


    Saludos!


    Gustavo Echenique Mir
    miércoles, 12 de enero de 2011 20:57
  • Te recomiendo que utilices lo que dice Leandro. es bastante estable y facil.

    O bien, puedes usar la lista con una clase que haga las veces de registro, para hacer mas clara la programacion 

     

     


    Jackson Rosado Developer c#, VFP, PL/SQL DBA - Oracle 10g
    miércoles, 12 de enero de 2011 21:15
  • Gracias, he utilizado los list i parece que funciona. Gracias
    jueves, 20 de enero de 2011 11:32