Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: DarkMatrix en 1 Noviembre 2011, 04:06 am



Título: Tamaño de un UDT
Publicado por: DarkMatrix en 1 Noviembre 2011, 04:06 am
Bueno solo tengo esa duda, saber si los UDTs tienen un tamaño limite cuando son parte de un array.

ejemplo:

Código
  1. Type tOnlineUserList
  2.  
  3.    uNickName           As String
  4.    uLevel              As String
  5.  
  6. End Type
  7.  
  8. Dim UserList(30000) as tOnlineUserList ' Tienen limite?
  9.  


Título: Re: Tamaño de un UDT
Publicado por: BlackZeroX en 1 Noviembre 2011, 04:44 am
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!¡.


Título: Re: Tamaño de un UDT
Publicado por: DarkMatrix en 2 Noviembre 2011, 02:20 am
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


Título: Re: Tamaño de un UDT
Publicado por: raul338 en 2 Noviembre 2011, 02:34 am
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
  1. Private Type Usuario
  2.    Nombre As String * 5
  3.    Apellido As String * 5
  4. End Type
  5.  

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


Título: Re: Tamaño de un UDT
Publicado por: DarkMatrix en 2 Noviembre 2011, 02:51 am
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...


Título: Re: Tamaño de un UDT
Publicado por: BlackZeroX en 2 Noviembre 2011, 07:38 am
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!¡.