Tamaño de un UDT

Iniciado por DarkMatrix, 1 Noviembre 2011, 04:06 AM

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

DarkMatrix

Bueno solo tengo esa duda, saber si los UDTs tienen un tamaño limite cuando son parte de un array.

ejemplo:

Código (vb) [Seleccionar]

Type tOnlineUserList

    uNickName           As String
    uLevel              As String
   
End Type

Dim UserList(30000) as tOnlineUserList ' Tienen limite?

Todo aquello que no se puede hacer, es lo que no intentamos hacer.
Projecto Ani-Dimension Digital Duel Masters (Juego de cartas masivo multijugador online hecho en Visual Basic 6.0)

Desing by DarkMatrix

BlackZeroX

El limite lo determina la cantidad de espacio en memoria disponible... lo mas seguro es que si haces un array de una gran magnitud se te alentice la re-localizacion de la misma si es que se necesite, en un caso de dimenciones estaticas no, pero de que hay limite si hay limite.

Es muy posible que en una arquitectura de 32 bits no superes las 4294967296 dimensiones es mas apenas y alcanzarias la mitad de las mismas... pero quien sabe.

Si lo que quieres es hacer alsi como una BDD es mejor que uses SQLite ( si es tu juego ), o alguna BDD respetable.

Dulces Lunas!¡.
The Dark Shadow is my passion.

DarkMatrix

Para la base de datos uso MySQL, pero el caso es que el juego me produce un error que no deja depurar, simplemente aparece el cartel que dice "No Enviar" y algunas veces me lanza un error en uno de los modulos referente a que las variables static no pueden ser mayores de 64k, me imagine que alguna de las variables del juego lanza ese error. El UDT tiene 18 variables string y declaro ese udt como dinamico y cuando se carga el juego llega al tamaño de UDT(1 to 4249). Supuse que para que mostrara el error de no enviar tenia que ser algo que no se descargaba bien o alguna saturacion en la memoria, sin embargo aun no doy con el problema :S

Todo aquello que no se puede hacer, es lo que no intentamos hacer.
Projecto Ani-Dimension Digital Duel Masters (Juego de cartas masivo multijugador online hecho en Visual Basic 6.0)

Desing by DarkMatrix

raul338

Supongo que lo borras en algun momento con Erase

(4249 * 18 * 2 (unicode)) * (promedio ... 20 caracteres :P) = 3059280 = Casi 3 megas :P
4249 me suena un poco excesivo para tener en memoria con 18 strings :P que guardas en esos strings? Podrias limitarlos a un tamaño maximo
Código (vb) [Seleccionar]

Private Type Usuario
    Nombre As String * 5
    Apellido As String * 5
End Type


Supongo que liberarás la memoria de ese array UDT usando Erase no? :rolleyes:

DarkMatrix

El array nunca lo libero, necesito que este activo durante toda la aplicacion ya que hay tengo unos datos que se leen durante casi toda la ejecucion del programa y leerlos cada vez del disco duro umm no creo que sea buena ida xD...

Todo aquello que no se puede hacer, es lo que no intentamos hacer.
Projecto Ani-Dimension Digital Duel Masters (Juego de cartas masivo multijugador online hecho en Visual Basic 6.0)

Desing by DarkMatrix

BlackZeroX

El error debe hubicarse en otro lugar... no creo que sea culpa de los UDT... almenos que juegues con sus "punteros" o dirreciones... aun asi es mejor ver que numero de error sale, y la descripcion del mismo!¡.

Dulces Lunas!¡.
The Dark Shadow is my passion.