Hola querid@ o queride (jaksjkadjkasjd  XD ), quiero transformar una array en  string, para poder despues transformar de string a array.Lo necesito y es urgente, no se como hacerlo, y es un problema bastante común segun veo. Lo necesito para cosas de NETWORKING.


Ejemplo:


array[1]="";
str = array;
array2=str;

#1 Agosto 10, 2018, 05:14:25 AM Ultima modificación: Agosto 10, 2018, 05:35:05 AM por BssString
Hola Edgamer63

Está difícil con arrays.
Te sugiero 2 cosas:
1- Si todos los valores guardados en el array tienen un único tipo de dato (ej: 8bit integer, boolean, string, etc), puedes guardar directamente el dato del array en el buffer y mandas el buffer vía networking.
Cuando lo recibas sólo lees cada valor del buffer y guardas la info en el nuevo array.
2- que utilices la DATA STRUCTURE "ds_list".
Puedes reemplazar tu sistema de arrays con el sistema de ds_lists que te ofrece más opciones
O si quieres mantener tus arrays, puedes hacer la siguiente conversión de array a ds_list:
list = ds_list_create() //Creas una lista y guardas su ID en la variable "list"
for (var i=0; i<array_length_1d(array); i+=1) { //Hace un loop desde 0 hasta la longitud del array
ds_list_add(list,array[i]) //Esto llena la ds_list con cada uno de los valores del array
}
string = ds_list_write(list) //Esta función convierne la lista en una String (no legible para humanos, no la dibujes en pantalla) que puedes enviar por un buffer o guardar en un archivo

ds_list_destroy(list) //Recuerda eliminar siempre tu list cuando ya no es necesaria


Una vez tienes la "string", la puedes mandar a través de un buffer vía Networking.
Donde recibes la info, tienes que ejecutar el siguiente código para transformar tu string a una ds_list denuevo
list = ds_create_list() //Si no existe la list, la creas, si ya existe este paso es innecesario
ds_list_read(list,string) //Esto transforma la string a una DS_list de nuevo. Debes asegurarte de haber recibido y asignado valor a la variable "string"


Luego puedes convertir nuevamente de DS_LIST a ARRAY (aunque repito, es innecesario, puedes simplemente trabajar con la list forever)
for (var i=0; i<ds_list_size(list); i+=1) {
array2[i] = ds_list_find_value(list,i)
}


Como recurso dinámico, las DS LISTs se guardan en el caché y no se borran automáticamente, por lo que debes eliminarlas manualmente usando la función:
if ds_exists(list,ds_type_list) ds_list_destroy(list)

Espero te sirva

Saludos

 :'( necesitaba las arrays... por que las DS_LIST Y DS_MAPS... son de caché... y yo necesito almacenar datos grandes.... y con caché me baja los FPS a 1 :'v ... datos que tienen al menos 1342177280 datos. y bueno,solo las arrays me soportan ese tamaño sin hacer que el juego baje un FPS...

¿Para que tantos datos?... pues es un MOTOR 3D complejisimo que yo sé como manejar :/.

Ya lo logré... gracias :D