Dudas VB

SeiYa

Buenas, tengo dos dudas.

La primera es:

Supongamos que tengo: Dim num1(10) as Integer.

Y luego que tengo por ahí: Dim variable as String.

Supongamos que variable vale "num1".

¿Hay alguna forma de hacer algo como:

Interpretar(variable)(1) para referirme a num1(1) ?

La segunda es:

Yo no he programado mucho en VB así que tengo esta duda, el caso es que quiero usar un array, pero no quiero definir NUNCA el número de elementos totales, lo que quiero hacer, es cuando necesite un espacio ir incrementando en 1 la capacidad del array.

Como no sabía, esto lo hice con una caja de texto indexada haciendo siempre un Load text1(1) ... (2) ... etcétera.

Si no me entendéis alguna duda, las re-explicaré.

Un saludo y gracias.

SeiYa

Bueno, Soltrac amablemente me contestó.

En lugar de Dim array(10) se hace con ReDim:

ReDim array(10)

Si quieres que en un momento de la ejecución aumente:

ReDim Preserve array(199)

Aumentará hasta 199 conservando los que ya hayas escrito (si no pones Preserve no les conservará).

Sobre la otra duda sigo en ascuas.

Gracias y un saludo.

E

A tu segunda duda:

Si quieres incrementar en "n" el tamaño de un array dinámico, puedes usar alguna variable (lo de la caja es muy cutre, con todos los respetos, para eso están las variables). Pero la mejor opción y la más segura es hacer referencia al propio tamaño del array y sumarle "n" mediante la función UBound.

Eso sí, el array, aunque dinámico, tiene que estar inicializado aunque sea con tamaño 0, para que la función UBound no pete cuando se le pase por parámetro el array.

Te pongo un ejemplo muy sencillo. Pinta en un formulario nuevo 1 botón y 3 labels y copia este código.

'--------------------------------------------------
Private Sub Command1_Click()

'Declaramos array dinámico
Dim arr() As Integer


'Lo inicializamos a '0'
ReDim arr(0)

'Pintamos en el label el tamaño del array
Label1.Caption = UBound(arr)

'Redimensionamos el array a 1 dimensión más de la que tuivera, en este caso pasa de 0 a 1

ReDim Preserve arr(UBound(arr) + 1)

'Pintamos en el label el tamaño del array
Label2.Caption = UBound(arr)

'Redimensionamos el array a 1 dimensión más de la que tuivera, en este caso pasa de 1 a 2

ReDim Preserve arr(UBound(arr) + 1)

'Pintamos en el label el tamaño del array
Label3.Caption = UBound(arr)

End Sub

'---------------------------------------------

Verás como el array aumenta y no hace falta ni cajas ni variables ni nada, únicamente la propia referencia al tamaño del array.

Salu2

SeiYa

No si he dicho que eso ya está resuelto XD lo que me falta es lo de que una variable contenga el nombre de otra y que funcione etc...

E

"lo que me falta es lo de que una variable contenga el nombre de otra y que funcione"

Explícate... pq tiene toda la pinta de que la solución a eso es un puntero si es que es lo que pienso. Pero claro, en VB, aunque posible... pfffff

SeiYa

Está en #1 pero lo explico.

Quiero recoger unos nombres de una base de datos y crear dinámicamente variables con el nombre de esos nombres.

Es decir, recojo en un String el nombre por ejemplo:

String variable = pablo

Y luego tengo por otra parte declarado dinámicamente un array pablo(4) por ejemplo, la gracia sería como crearlo o si existe alguna forma de usar el contenido de una variable como código etc ... para hacer algo como:

Interpretar(variable)(2) para referirme a pablo(2) ya que lo que quiero es que las variables se llamen por esos nombres, se que hay alternativas pero es así como quiero XD

Un saludo.

IS4kO

No me suena que puedas crear nombres de variables dinámicamente con ningun lenguaje, si es lo que creo que quieres, para eso estan los punteros.

E

#6, busca otra solución o cambia de lenguaje. PUNTO! xDDDD

Usuarios habituales

  • ElTutor
  • IS4kO
  • SeiYa