Copiar arrays de strings

Started by FreeYourMind, December 08, 2010, 07:43:10 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Drumpi

Las strings son arrays de char, pero de tamaño indefinido (usan punteros).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

Quote from: Drumpi on December 14, 2010, 06:03:40 PM
Las strings son arrays de char, pero de tamaño indefinido (usan punteros).

no, no y no... lo dije unas 1000 veces... las strings en bennugd (y no me vengas con que no hablabas de bennugd) no son arrays a chars, ni tampoco punteros... las strings en bennugd son objetos que se crean y destruyen en cada operacion, por eso es conveniente usar char[].
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Drumpi no hablaba de BennuGD  :D

FreeYourMind

Probando con el experimental:

No entiendo muy bien los cambios, son sólo internos o tambien en codigo de Bennu ?
Lo digo porque esto que al principio dabas por valido al copiar un array de strings ahora me da error de incompatible type:

private
CurrentDialog[4] = "a", "b", "c", "d", "e";
Copia[4];
BEGIN

  Copia = CurrentDialog;

ya se que deberia tener esto para que no falle:

private
CurrentDialog[4] = "a", "b", "c", "d", "e";
Copia[4] = "", "", "", "", "";

pero no tendria que ser necesario, porque ya has declarado su dimensión aunque no tengas valores asignados (ya se que falla porque tienes valores null)...




Otra cosa (hablando de la r189):


Como te comentaba, en la implementacion final no pienso hacer clones,
ya que no quiero crear arrays en memoria inecesarios, o sea, quiero crear
siempre sólo un array, con condiciones if.

Pues lo que no me mola es que si lo quiero hacer, por ejemplo, declarar
un array en private con valores asignados, se hace así:

PRIVATE
CurrentDialog[4] = "a", "b", "c", "d", "e";

BEGIN ...


Pero si lo quiero hacer en el cuerpo (despúes del begin),
asignar sus valores tiene que ser así:

PRIVATE
CurrentDialog[4];

BEGIN

IF (Lang == 1)
    CurrentDialog[0] = "a";
    CurrentDialog[1] = "b";
    CurrentDialog[2] = "c";
    CurrentDialog[3] = "d";
    CurrentDialog[4] = "e";
END
IF (Lang == 2)

...

Y lo que molaria es poder hacerlo así (asignar todos sus valores de golpe):

PRIVATE
CurrentDialog[4];

BEGIN

IF (Lang == 1)
    CurrentDialog = "a", "b", "c", "d", "e";
END
IF (Lang == 2)
    CurrentDialog = "hfr", "dev", "rv", "drv", "cd";
END

...

SplinterGU

la declaracion deberia funcionar, probaste poniendo "string CurrentDialog..."?

la asignacion multiple esa que planteas en realtime es una locura, no recuerdo 1 solo lenguaje que permita eso...

pero para eso, diseñas los arrays fijos y luego los copias a tu array de trabajo.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DjSonyk

Quote from: SplinterGU on December 15, 2010, 12:48:36 AM
...no recuerdo 1 solo lenguaje que permita eso...

Ten cuidado con estas palabras Splinty que yo las puse una vez y me saltaron que se podia hacer en un lenguaje que no lo conoce ni su tia.... xD
Vamos si que es conocido pero es mas para Web que programación en si, ya que para mi no son mas que nada interpretes....

SplinterGU

Quote from: DjSonyk on December 15, 2010, 12:52:22 AM
Quote from: SplinterGU on December 15, 2010, 12:48:36 AM
...no recuerdo 1 solo lenguaje que permita eso...

Ten cuidado con estas palabras Splinty que yo las puse una vez y me saltaron que se podia hacer en un lenguaje que no lo conoce ni su tia.... xD
Vamos si que es conocido pero es mas para Web que programación en si, ya que para mi no son mas que nada interpretes....

dije que no recuerdo ninguno, no dije que no existan.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DjSonyk

Quote from: SplinterGU on December 15, 2010, 01:01:21 AM
Quote from: DjSonyk on December 15, 2010, 12:52:22 AM
Quote from: SplinterGU on December 15, 2010, 12:48:36 AM
...no recuerdo 1 solo lenguaje que permita eso...

Ten cuidado con estas palabras Splinty que yo las puse una vez y me saltaron que se podia hacer en un lenguaje que no lo conoce ni su tia.... xD
Vamos si que es conocido pero es mas para Web que programación en si, ya que para mi no son mas que nada interpretes....

dije que no recuerdo ninguno, no dije que no existan.
yo dije lo mismo que no recordaba ..... ¬¬, tampoco hablé de que no existiera...

SplinterGU

puede que sea, lua, no recuerdo, pero hacerlo en bennu es una locura...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DjSonyk

Quote from: SplinterGU on December 15, 2010, 01:31:43 AM
puede que sea, lua, no recuerdo, pero hacerlo en bennu es una locura...
Digo yo que ando poco lucido estos dias que apenas estoy durmiendo pero vamos...Yo me refiero a la frase no a los arrays,vamos que para nada estoy hablando de los arrays ,que ya me quedo claro cuando le contestastes a drumpi que en bennugd los strings se manejan en forma de objetos ...
Creo que deverias leertelo todo de nuevo,eso si muy despacito....

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

BoMbErLiNk

Splinter, he probado la nueva versión y no me ha roto nada en el juego (he mirado especialmente el editor de nombres que hace uso de arrays, strings, chars y conversiones varias), no he probado la estabilidad, ha sido un test muy fugaz pero todo ha ido correctamente.

SplinterGU

Quote from: BoMbErLiNk on December 15, 2010, 04:14:18 AM
Splinter, he probado la nueva versión y no me ha roto nada en el juego (he mirado especialmente el editor de nombres que hace uso de arrays, strings, chars y conversiones varias), no he probado la estabilidad, ha sido un test muy fugaz pero todo ha ido correctamente.

muchas gracias bomber... has pasado algunos niveles? con proyectos del tamaño del SoRR, estas pruebas son muy valiosas... gracias...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Es tan complicado implementar eso ? No quiero declarar tantos arrays en memoria y la opcion de asignar posicion a posicion para tanto texto me parece programación de novato  ;D

SplinterGU

no solo muy complicado, sino que propenso a errores y malas interpretaciones, ya que esto serviria para lenguajes simples donde solo podes asignar variables en lineas separadas, pero en bennugd podes asignar variables dentro de parametros o dentro de un if, y en el caso de un parametro seria muy confuso saber si son parametros separados o multiple asignacion... definitivamente no le veo sentido...

sin embargo, no tenes que copiar 1 a 1... tenes que tener arrays preset, y copiarlos para reiniciar tus vectores.

por ejemplo

global
    int array_preset_1[2] = 1, 2, 3;
    int array_preset_2[2] = 6, 6, 6;
    int array_preset_3[2] = 2, 5, 6;

...

    if ( level1 )
         mis_valores = array_preset_1;
    end
    if ( level2 )
         mis_valores = array_preset_2;
    end
...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2