duda con arrays o matriz?

Iniciado por ricardovinzo, 10 Junio 2008, 04:38 AM

0 Miembros y 1 Visitante están viendo este tema.

ricardovinzo

bueno gente estaba leyendo esto sobre las matrices, etc... que si:

dim var() As string

bueno, pero de verdad hay algo que no entendi y fue la manera de introducir en tiempo de diseño cosas a esta matriz osea que si

var(0) = "carlos"
var(1) = "jose"
var(3) = "martin"

como lo puedo hacer, osea si me pueden explicar de una manera simple! ;) se que es facil pero no entiendo muy bien disculpen las molestias! ;)
3# Convocacion de Moderadores en Code Makers, entra!

cassiani

#1
Debes saber un par de cositas, hay arrays estáticos y arrays dinámicos y tu estas trabajando con los dinámicos, es decir, no estas sujeto a trabajar con la misma cantidad de elementos con las que le asignes la primera ves ¿pero queeeé? y ¿por qué dices eso? si es así ¿como son los estáticos?

te explico:

Arrays Dinámicos
Código (vb) [Seleccionar]

Option Explicit

Dim Var() As String

Private Sub Form_Load()
   
    ' Se asigna espacio de almacenamiento a una variable de matriz, usando ReDim
    ReDim Var(2)
   
    'asignar valores
    Var(0) = "carlos"
    Var(1) = "jose"
    Var(2) = "martin"
   
    MsgBox Var(0) & " " & Var(1) & " " & Var(2)
   
    'redimensionamos...
   
    ReDim Var(6) 'indicar la cantidad de elementos del vector
   
    'asignar valores
    Var(3) = "luis"
    Var(4) = "Yessi"
    Var(5) = "yohanna"
   
    MsgBox Var(3) & " " & Var(4) & " " & Var(5)
End Sub



Arrays estáticos

Trabajando con arrays estáticos te evitas el tener que redimensionarlo, pero muchas veces no es lo que se desea, para declarar un array estático (array con un número fijo de elementos), Visual Basic hace tres consideraciones importantes:

    - Para declarar un array global, hágalo en la sección de declaraciones de un módulo utilizando la sentencia Public.
    - Para declarar un array a nivel de un módulo, hágalo en la sección de declaraciones del módulo utilizando la sentencia Public o Dim.
    - Para declarar un array local a un procedimiento, utilice la sentencia Dim o Static dentro del propio procedimiento.

Código (vb) [Seleccionar]

Option Explicit

' Es ESTÁTICO, por lo tanto indicas la cantidad de elementos de una vez. :o
Dim Var(3) As String
Private Sub Form_Load()
On Error GoTo Error
    'asignar valores
    Var(0) = "carlos"
    Var(1) = "jose"
    Var(2) = "martin"
   
    MsgBox Var(0) & " " & Var(1) & " " & Var(2)
   
    'NO puedes redimensionar el vector, porque es ESTÁTICO
    ReDim Var(4) 'indicar la cantidad de elementos del vector
   
    'asignar valores
    Var(4) = "luis" 'Lo podrias hacer si fuera dinámico, pero no lo es o.O
   
    Exit Sub 'NO presentamos el mensaje de ERROR sino es necesario...
Error:
    MsgBox "No puedes redimensionar un array ESTATICO"
   
    Err = 0
End Sub



Hole_System

Cita de: cΔssiΔnі en 10 Junio 2008, 05:16 AM
Debes saber un par de cositas, hay arrays estáticos y arrays dinámicos y tu estas trabajando con los dinámicos, es decir, no estas sujeto a trabajar con la misma cantidad de elementos con las que le asignes la primera ves ¿pero queeeé? y ¿por qué dices eso? si es así ¿como son los estáticos?

te explico:

Arrays Dinámicos
Código (vb) [Seleccionar]

Option Explicit

Dim Var() As String

Private Sub Form_Load()
   
    ' Se asigna espacio de almacenamiento a una variable de matriz, usando ReDim
    ReDim Var(2)
   
    'asignar valores
    Var(0) = "carlos"
    Var(1) = "jose"
    Var(2) = "martin"
   
    MsgBox Var(0) & " " & Var(1) & " " & Var(2)
   
    'redimensionamos...
   
    ReDim Var(6) 'indicar la cantidad de elementos del vector
   
    'asignar valores
    Var(3) = "luis"
    Var(4) = "Yessi"
    Var(5) = "yohanna"
   
    MsgBox Var(3) & " " & Var(4) & " " & Var(5)
End Sub



Arrays estáticos

Trabajando con arrays estáticos te evitas el tener que redimensionarlo, pero muchas veces no es lo que se desea, para declarar un array estático (array con un número fijo de elementos), Visual Basic hace tres consideraciones importantes:

    - Para declarar un array global, hágalo en la sección de declaraciones de un módulo utilizando la sentencia Public.
    - Para declarar un array a nivel de un módulo, hágalo en la sección de declaraciones del módulo utilizando la sentencia Public o Dim.
    - Para declarar un array local a un procedimiento, utilice la sentencia Dim o Static dentro del propio procedimiento.

Código (vb) [Seleccionar]

Option Explicit

' Es ESTÁTICO, por lo tanto indicas la cantidad de elementos d euna vez
Dim Var(3) As String
Private Sub Form_Load()
On Error GoTo Error
    'asignar valores
    Var(0) = "carlos"
    Var(1) = "jose"
    Var(2) = "martin"
   
    MsgBox Var(0) & " " & Var(1) & " " & Var(2)
   
    'NO puedes redimensionar el vector, porque es ESTÁTICO
    ReDim Var(4) 'indicar la cantidad de elementos del vector
   
    'asignar valores
    Var(4) = "luis" 'Lo podrias hacer si fuera dinámico, pero no lo es o.O
   
Error:
    MsgBox "No puedes redimensionar un array ESTATICO"
   
    Err = 0
End Sub


Una dudita, cuando pones la etiqueta Error: esta se activa cuando ocurre uno o mas bien lo pones para saber que es lo que tiene que ir cuando no se cumple la sentencia..   ;D ;D

Je menos mal, aclare una duda q tenia..ufff siempre se aprende algo...

Saludotes y muy buena explicación..

By Pitoniso.

Hans el Topo

en lo del on error se se ha olvidado poner exit sub para que no entre cuando todo vaya bien
el on error goto sirve para controlar/informar de errores durante la ejecución de dicha función/procedimiento


Private Sub Form_Load()
On Error GoTo Error

'bla bla bla ...

exit sub    '<---
Error:
    MsgBox "No puedes redimensionar un array ESTATICO"

    Err = 0
End Sub
 

CeLaYa

creo que tambien hay que mencionar que cuando se redimensiona un array dinamico pierde los valores que han sido almacenados. para no perderlos basta con usar "Redim preserve"
"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.