Buenas,

existe alguna funci?n para saber el tama?o de una array (por ejemplo, que el ?ltimo indice sea de 10)?

Muchas gracias,

David

mmm creo que no.. para eso recomiendo inicializar una variable aparte que contenga el valor maximo del arrray y modificarla cada vez que agregues un valor, o simplemente usar las funciones ds_list_()

Te hago una para que agregues en script
[gml]a=0
while string(array[a+1])<>"0"
{
a+=1
}
return a[/gml]
Claro, esta funci?n s?lo funciona si activ?s treat uninitialized variables as 0, pero no s? c?mo chequear la existencia de una variable (dentro de un array) sin declarar si no uso la opci?n que te coment?, pero te la recomiendo, es muy c?modo no declarar variables




Pero Texic, t? tienes mucha pr?ctica con el GM, puedo suponer que no te ha de ser dif?cil detectar errores a?n con esa opci?n activada. Pero a un novato que a?n no ha dominado el uso de variables y arrays eso podr?a acabarlo, por lo tanto no deber?as recomendarle a un usuario que haga uso de esa opci?n si no conoces su nivel de programaci?n.

Para m? la opci?n de manuel777 es la m?s acertada, pero si tienes la versi?n Pro no te compliques la vida y usa las funciones de estructuras de datos.
       

Bueno bueno, siempre me retan por recomendarle esa opci?n a los usuarios XD
Ni que fuera tan mala, nunca me ha traido problemas, y la uso desde el inicio de mis tiempos en gml




Pues yo la llegu? a usar durante un tiempo y s?lo me trajo dolores de cabeza. XD
       

@Texic: Ese metodo solo es valido si el array no contiene ningun valor cero, sino se cortaria a la mitad y da valores menores del real. Es una lastima que GameMaker no tenga un valor null :(

Lo que pasa es que seg?n recuerdo, el GM trata a los arrays como simples variables numeradas, y cada una puede estar en cualquier lugar de memoria.
Este c?digo ser?a v?lido:
[gml]foo[0] = 10;
foo[9] = 20;[/gml]
Lo que no s? es que pasa si despu?s de eso intent?s acceder a foo[4] por ejemplo. Seguramente el GM se queje con un error, aunque la variable foo S? est? declarada. Por eso GM no tiene funci?n para saber el tama?o de un array.
Yo har?a lo que propone manuel777. Es lo que siempe hago :P. Al array le pongo un nombre en singular, y creo otra variable con el mismo nombre pero en plural que indique el tama?o del array.
Por ejemplo:
[gml]item[0] = "a";
items = 1;[/gml]
Vim.

Cita de: Wadk en Noviembre 17, 2010, 05:19:55 PM
Lo que no s? es que pasa si despu?s de eso intent?s acceder a foo[4] por ejemplo. Seguramente el GM se queje con un error, aunque la variable foo S? est? declarada. Por eso GM no tiene funci?n para saber el tama?o de un array.

De hecho foo[4] ser?a 0, porque el GM reserva el espacio en memoria para todos los ?ndices del array no utilizados que sean anteriores al ?ndice m?ximo del array. Lo le? en el manual. ;D
       

Cita de: Hackware en Noviembre 19, 2010, 09:58:13 AM
Cita de: Wadk en Noviembre 17, 2010, 05:19:55 PM
Lo que no s? es que pasa si despu?s de eso intent?s acceder a foo[4] por ejemplo. Seguramente el GM se queje con un error, aunque la variable foo S? est? declarada. Por eso GM no tiene funci?n para saber el tama?o de un array.

De hecho foo[4] ser?a 0, porque el GM reserva el espacio en memoria para todos los ?ndices del array no utilizados que sean anteriores al ?ndice m?ximo del array. Lo le? en el manual. ;D
O: Ya veo...
Vim.