Ver Mensaje Individual
  #12 (permalink)  
Antiguo 16/03/2006, 01:05
Avatar de [EX3]
[EX3]
 
Fecha de Ingreso: marzo-2006
Ubicación: Fuenlabrada, Madrid
Mensajes: 203
Antigüedad: 18 años, 2 meses
Puntos: 1
Cita:
Iniciado por MaxExtreme
Acabas de encontrar otra limitación (más aún) a VB: No puede declarar vectores mayores de 2500 para tipos String. ;)
Perdon? Cualquier dato estatico de una estructura definida por el usuario tiene una capacidad maxima de 64kb. Un array estatico de 2500 strings dentro de una estructura no llega ni por asomo a esa cantidad de memoria:

Código:
Private Type ZIPnames
    s(0 To 16377) As String
    
End Type
Este valor es el maximo que permitira dicho elemento dentro de una estructura de datos. Ahora, si el array fuese dinamico:
Código:
Private Type ZIPnames
    s() As String
    
End Type

Dim a As ZIPnames

Private Sub Form_Load()
Redim a.s(999999) As String

End Sub
Si el array fuese dinamico tendrias como capacidad maxima todo lo que diese de si la memoria de tu sistema. (si alguien prueba el ejemplo que no se asuste si tarda unos minutos en responder el programa, 999999 strings en un array es mucha memoria )

jevalenzuela, la solucion que yo utilizo en casos como el tuyo es la de hacer dicho elemento dinamico en vez de estatico. En este caso se trata de un listado de archivos. Si la mayoria de las veces solo fueras a listar un total de 35 archivos, para que malgastar memoria a lo tonto alojando 2965 elementos vacios en el array? Definelo dinamicamente y añade elementos segun archivos vayas leyendo:
Código:
Redim Preserve a.s(Ubound(a.s) + 1) As String
Esto añadiria un elemento mas al array sin perder los datos del resto de los elementos existentes.

Salu2...
__________________
Proyecto dx_lib32 (http://dxlib32.se32.com) Libreria DLL ActiveX para el desarollo de juegos y programas multimedia en Visual Basic 6.0 con la potencia de DirectX

Dice un dicho que "el que calla otorga". En internet tenemos otro que dice "nunca alimentes a un troll" que viene a decir "dejale hablar solo que se ya se cansara de incordiar". Solo los necios creen tener la razon con la ultima palabra.