Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: ricardovinzo en 10 Junio 2008, 04:38 am



Título: duda con arrays o matriz?
Publicado por: ricardovinzo en 10 Junio 2008, 04:38 am
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! ;)


Título: Re: duda con arrays o matriz?
Publicado por: cassiani 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
  1. Option Explicit
  2.  
  3. Dim Var() As String
  4.  
  5. Private Sub Form_Load()
  6.  
  7.    ' Se asigna espacio de almacenamiento a una variable de matriz, usando ReDim
  8.    ReDim Var(2)
  9.  
  10.    'asignar valores
  11.    Var(0) = "carlos"
  12.    Var(1) = "jose"
  13.    Var(2) = "martin"
  14.  
  15.    MsgBox Var(0) & " " & Var(1) & " " & Var(2)
  16.  
  17.    'redimensionamos...
  18.  
  19.    ReDim Var(6) 'indicar la cantidad de elementos del vector
  20.  
  21.    'asignar valores
  22.    Var(3) = "luis"
  23.    Var(4) = "Yessi"
  24.    Var(5) = "yohanna"
  25.  
  26.    MsgBox Var(3) & " " & Var(4) & " " & Var(5)
  27. 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
  1. Option Explicit
  2.  
  3. ' Es ESTÁTICO, por lo tanto indicas la cantidad de elementos de una vez. :o
  4. Dim Var(3) As String
  5. Private Sub Form_Load()
  6. On Error GoTo Error
  7.    'asignar valores
  8.    Var(0) = "carlos"
  9.    Var(1) = "jose"
  10.    Var(2) = "martin"
  11.  
  12.    MsgBox Var(0) & " " & Var(1) & " " & Var(2)
  13.  
  14.    'NO puedes redimensionar el vector, porque es ESTÁTICO
  15.    ReDim Var(4) 'indicar la cantidad de elementos del vector
  16.  
  17.    'asignar valores
  18.    Var(4) = "luis" 'Lo podrias hacer si fuera dinámico, pero no lo es o.O
  19.  
  20.    Exit Sub 'NO presentamos el mensaje de ERROR sino es necesario...
  21. Error:
  22.    MsgBox "No puedes redimensionar un array ESTATICO"
  23.  
  24.    Err = 0
  25. End Sub



Título: Re: duda con arrays o matriz?
Publicado por: Hole_System en 10 Junio 2008, 06:51 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
  1. Option Explicit
  2.  
  3. Dim Var() As String
  4.  
  5. Private Sub Form_Load()
  6.  
  7.    ' Se asigna espacio de almacenamiento a una variable de matriz, usando ReDim
  8.    ReDim Var(2)
  9.  
  10.    'asignar valores
  11.    Var(0) = "carlos"
  12.    Var(1) = "jose"
  13.    Var(2) = "martin"
  14.  
  15.    MsgBox Var(0) & " " & Var(1) & " " & Var(2)
  16.  
  17.    'redimensionamos...
  18.  
  19.    ReDim Var(6) 'indicar la cantidad de elementos del vector
  20.  
  21.    'asignar valores
  22.    Var(3) = "luis"
  23.    Var(4) = "Yessi"
  24.    Var(5) = "yohanna"
  25.  
  26.    MsgBox Var(3) & " " & Var(4) & " " & Var(5)
  27. 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
  1. Option Explicit
  2.  
  3. ' Es ESTÁTICO, por lo tanto indicas la cantidad de elementos d euna vez
  4. Dim Var(3) As String
  5. Private Sub Form_Load()
  6. On Error GoTo Error
  7.    'asignar valores
  8.    Var(0) = "carlos"
  9.    Var(1) = "jose"
  10.    Var(2) = "martin"
  11.  
  12.    MsgBox Var(0) & " " & Var(1) & " " & Var(2)
  13.  
  14.    'NO puedes redimensionar el vector, porque es ESTÁTICO
  15.    ReDim Var(4) 'indicar la cantidad de elementos del vector
  16.  
  17.    'asignar valores
  18.    Var(4) = "luis" 'Lo podrias hacer si fuera dinámico, pero no lo es o.O
  19.  
  20. Error:
  21.    MsgBox "No puedes redimensionar un array ESTATICO"
  22.  
  23.    Err = 0
  24. 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..



Título: Re: duda con arrays o matriz?
Publicado por: Hans el Topo en 10 Junio 2008, 11:55 am
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


Código:
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


Título: Re: duda con arrays o matriz?
Publicado por: CeLaYa en 10 Junio 2008, 23:36 pm
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"