Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Iros en Abril 25, 2013, 08:50:57 PM

Título: [SOLUCIONADO] Problema definiendo array
Publicado por: Iros en Abril 25, 2013, 08:50:57 PM
Buenas, como dice el título tengo problemas al definir un array. Lo que hago es llamar un *.ini con la DLL IniLibGMDLL.dll. El problema es que quiero definir cada llave (key) del *ini en un array, para ello uso este código:

[gml]rini_init();
INI = rini_open("List.ini");
//Iterate through them
name = rini_key_find_first(INI,"PARTICIPANTES");
while (name!="") {//Con esto creamos un array
    name[a] = rini_key_find_next(INI,"PARTICIPANTES");
    a+=1
}
//rini_close(INI);
rini_close(INI);

alarm[0] = 15;[/gml]

Se que está mal pero no se como hacer para crear un array para que cada valor se guarde, no se si me explico.

Desde ya, muchas gracias.
Título: Re:[AYUDA] Problema definiendo array
Publicado por: Johann en Abril 25, 2013, 10:04:42 PM
lo único que falta es declarar a antes de entrar al bucle:
[gml]
rini_init();
INI = rini_open("List.ini");
//Iterate through them
name = rini_key_find_first(INI,"PARTICIPANTES");
var a=0//declara la variable para el crecimiento de los indices
while (name!="") {//Con esto creamos un array
    name[a] = rini_key_find_next(INI,"PARTICIPANTES");
    a+=1
}
//rini_close(INI);
rini_close(INI);

alarm[0] = 15;
[/gml]

a menos que sea una variable declarada en el créate del objeto
Título: Re:[AYUDA] Problema definiendo array
Publicado por: Iros en Abril 25, 2013, 10:37:53 PM
Defino la variable a en el evento CREATE. Al ejecutar el código me dice que el índice de array no puede superar los 32000 o algo así. La verdad que no se que puede ser el problema :S
Título: Re:[AYUDA] Problema definiendo array
Publicado por: Mgbu en Abril 26, 2013, 02:11:57 AM
Cita de: Iros en Abril 25, 2013, 10:37:53 PM
Defino la variable a en el evento CREATE. Al ejecutar el código me dice que el índice de array no puede superar los 32000 o algo así. La verdad que no se que puede ser el problema :S
Entonces es porque el indice del array no puede superar los 32000 :D
Por qué llegas a un indice tan alto? Lo necesitas realmente o es un problema del bucle? Porque no creo que tengas tantos participantes
No se como funciona el código pero no se debe estar cumpliendo la condición del while, por lo que veo es porque no hay ningun nombre con string "" en el ini
Título: Re:[AYUDA] Problema definiendo array
Publicado por: Iros en Abril 26, 2013, 02:29:44 AM
Ese problema ya lo arreglé, el código me quedó de esta forma:

[gml]
rini_init();
INI = rini_open("List.ini");
//Iterate through them
name = rini_key_find_first(INI,"PARTICIPANTES");
while (name!="") {//Con esto creamos un array ^^
    name = rini_key_find_next(INI,"PARTICIPANTES");
    name[a] = rini_key_find_next(INI,"PARTICIPANTES");
    a+=1
}
//rini_close(INI);
rini_close(INI);

alarm[0] = 15;[/gml]

Ahora el problema es que no entra en el alarm :S

[EDIT]

Si entra en el evento alarm, pero no se porque motivo no me ejecuta el random :S
[gml]value = random_range(0,a)[/gml]
Donde "a" es la variable que definí antes que se incrementaba :S
Título: Re:[AYUDA] Problema definiendo array
Publicado por: brunoxzx en Abril 26, 2013, 02:47:13 AM
[gml]var a;a=0;
rini_init();
INI = rini_open("List.ini");
//Iterate through them
name = rini_key_find_first(INI,"PARTICIPANTES");
while (name!="") {//Con esto creamos un array ^^
    name = rini_key_find_next(INI,"PARTICIPANTES");
    name[a] = name;
    a+=1
}
//rini_close(INI);
rini_close(INI);

alarm[0] = 15;[/gml]
No debería ser así?.

Lo de la variable "a" es fácil, solo definela en create y no en ese código o usa el random dentro de ese código. Las variables declaradas con "var" son temporales y solo funcionan en el código en el que son declaradas.
Título: Re:[AYUDA] Problema definiendo array
Publicado por: Iros en Abril 26, 2013, 04:12:15 AM
Antes lo hacía con var pero necesito usar las variables que defino en otros eventos por eso las hice local en vez de temporales.

El problema que tengo que es genera todo bien el número, le pongo un round() y redondea perfecto, pero no se porqué el valor ese no coincide con el valor del array cuando llamo uno, me explico, en otro objeto pongo: obj_sortear.name[obj_sortear.value] y me larga el resultado, pero comparándolo en la lista del ini el valor de VALUE no coincide :S

[EDIT]

Ya lo arreglé, quedó así:

[gml]
rini_init();
INI = rini_open("List.ini");
//Iterate through them
global.name[a] = rini_key_find_first(INI,"PARTICIPANTES");
//show_message(string(a)+"="+global.name[a])
while (global.name[a]!="") {//Con esto creamos un array ^^
    a += 1
    //global.name = rini_key_find_next(INI,"PARTICIPANTES");
    global.name[a] = rini_key_find_next(INI,"PARTICIPANTES");
    //show_message(string(a)+"="+global.name[a])
}
//rini_close(INI);
rini_close(INI);

alarm[0] = 15;[/gml]

El amigo sooel me ayudó :D
Título: Re:[AYUDA] Problema definiendo array
Publicado por: brunoxzx en Abril 26, 2013, 05:30:41 AM
Cita de: Iros en Abril 26, 2013, 04:12:15 AM
Antes lo hacía con var pero necesito usar las variables que defino en otros eventos por eso las hice local en vez de temporales.
??? Yo te dije que las hagas locales no temporales, y de hecho por alguna extraña razón borraste el "var a; a=0;" de tus códigos de allí los copie.

Como sea que bueno que lo haz resuelto, en realidad solo tenias que cambiar el "a+=1" de lugar  XD.
Título: Re:[SOLUCIONADO] Problema definiendo array
Publicado por: Iros en Abril 27, 2013, 02:23:02 AM
Lo borré porque me di cuenta que copié el código anterior otra vez xD.

Al hacer la variable name global se hizo todo más fácil para llamarlas y todo. Gracias a todos por su ayuda!!.