Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: FreeYourMind on December 08, 2010, 07:43:10 PM

Title: Copiar arrays de strings
Post by: FreeYourMind on December 08, 2010, 07:43:10 PM
Hola, intento copiar un array de strings a otro nuevo, pero este se queda null, no se como copiarlo, os pongo el código que pongo (caso 1 y 2)

Caso 1: El clon sigue vacio, el say dice '0'

PRIVATE
mis_frases[2] = "ola", "tonto", "doom!";
clon[2];

BEGIN

clon[2] = mis_frases[2];
say(clon[1]);


Caso 2: El clon sigue vacio, el say dice '0'

PRIVATE
string mis_frases[2] = "ola", "tonto", "doom!";
string clon[2];

BEGIN

clon[2] = mis_frases[2];
say(clon[1]);


Otra cosas,

1 - Imaginad, que tengo otro array llamado tus_frases[5], y segun un parametro de entrada (mio_o_tuyo) quiero que el clon sea una copia de uno
o de otro, pero claro, partiendo del principio que no se la dimension del array que quiero copiar (o sea, quiero que la dimensión del clon sea dinamica,
y se quede con la dimensión del array origen cuando creo el clon).

2 - Me gustaria tambien saber como referenciarlo usando un puntero en lugar de crear una copia nueva.

Gracias  ;)
Title: Re: Copiar arrays de strings
Post by: Noivern on December 08, 2010, 08:34:40 PM
mmm en el says pones que muestre la posicion [1], pero lo que estas copiando es la posicion [2]. (No estoy muy seguro si con los string copias la data o solo referencias la data).
y para el resto:
1. Usar punteros para el tamaño de array dinamico.
2. Ni idea, tengo que leer sobre esto, Splinter hace tiempo puso un link muy bueno acerca de punteros (en ingles). Buscalo como manejo de punteros en bennu o algo asi, ojala el se pronuncie ya que no me acuerdo el nombre del hilo :P
Title: Re: Copiar arrays de strings
Post by: FreeYourMind on December 08, 2010, 10:08:51 PM
Gracias.
Si me he fijado que estoy copiando el valor de la posición, pero queria copiar todo el array.
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 08, 2010, 10:25:05 PM
como ya te respondieron, estas copiando el elemento 2 e imprimiendo el 1, no es logico.
si lo que queres es copiar el array entero, solo tenes que hacer lo siguiente (ambos arrays deben tener las mismas dimensiones, y el mismo tipo)

clon = mis_frases;

con respecto a los punteros, podes usar punteros a cualquier cosa, menos a strings... si queres punteros a datos de tipo cadena, usa char[] para guardar las strings.
Title: Re: Copiar arrays de strings
Post by: FreeYourMind on December 08, 2010, 10:37:53 PM
No funciona Splinter

PRIVATE
mis_frases[2] = "ola", "tonto", "doom!";
clon[2];

BEGIN

clon = mis_frases;


--> clon sigue null
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 08, 2010, 10:58:15 PM
parece que algo se rompio, porque estos test los habia hecho hace tiempo y funcionaban.

ahora vamos a ver que se rompe cuando arregle esto.
Title: Re: Copiar arrays de strings
Post by: Drumpi on December 09, 2010, 01:01:32 AM
Solución temporal:

clon[0]=mis_frases[0];
clon[1]=mis_frases[1];
clon[2]=mis_frases[2];

O usar un bucle for ;D

Splinter: ¿habría algún problema en crear una lista enlazada usando nodos de este tipo?

type nodo
string texto;
nodo pointer ptr;
end
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 09, 2010, 01:18:09 AM
ningun problema
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 09, 2010, 02:01:44 AM
ya tengo localizado el tema, me suena que nunca funciono correctamente eso, por lo menos no con tipos basicos, deberia funcionar con structuras...

la cosa es que tengo que arreglar el tema de que una variable array referenciada sin [] apunta al primer elemento, tengo que quitar eso, salvo para asignarlos a punteros.

va a ser un lindo problema resolverlo, pero lo resolvere, no se cuando, porque se me acabo el feriado y hoy tuve un dia de salud patetico.
Title: Re: Copiar arrays de strings
Post by: FreeYourMind on December 09, 2010, 06:49:56 AM
Quote from: Drumpi on December 09, 2010, 01:01:32 AM
Solución temporal:

clon[0]=mis_frases[0];
clon[1]=mis_frases[1];
clon[2]=mis_frases[2];

O usar un bucle for ;D

Splinter: ¿habría algún problema en crear una lista enlazada usando nodos de este tipo?

type nodo
string texto;
nodo pointer ptr;
end

Jjajjjajajaja, si soluciones o caminos hay muchos, precisamente si así lo quisiera hacer ni preguntaba xDDD
Title: Re: Copiar arrays de strings
Post by: Windgate on December 09, 2010, 11:00:57 AM
type nodo
string texto;
nodo pointer ptr;
end


Probado por mí a lo bestia en el visor 3D y la memoria dinámica funciona 100% perfecta.

clon = mis_frases;

Hubiese apostado a que podía hacerse, pero la opción de copiar una a una tampoco cuesta demasiado :P
Title: Re: Copiar arrays de strings
Post by: FreeYourMind on December 09, 2010, 02:25:24 PM
Si al final ni siquiera voy a copiar, porque no quiero crear tantos vectores en memoria, le pasare distintos valores al mismo array segundo if's y listo. Pero esto es un tema pendiente, y la copia no funciona, me imagino que usas una version antigua.
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 09, 2010, 02:55:28 PM
Quote from: Windgate on December 09, 2010, 11:00:57 AM
type nodo
string texto;
nodo pointer ptr;
end


Probado por mí a lo bestia en el visor 3D y la memoria dinámica funciona 100% perfecta.

clon = mis_frases;

Hubiese apostado a que podía hacerse, pero la opción de copiar una a una tampoco cuesta demasiado :P

yo tambien, pero parece que no, creo que deberia funcionar con structs.

Quote from: FreeYourMind on December 09, 2010, 02:25:24 PM
Si al final ni siquiera voy a copiar, porque no quiero crear tantos vectores en memoria, le pasare distintos valores al mismo array segundo if's y listo. Pero esto es un tema pendiente, y la copia no funciona, me imagino que usas una version antigua.

no importa, igual tengo que darle soporte a eso, por lo que veo mas que un bug (algo que anda mal) parece ser una funcionalidad no implementada.

estoy en ello.
Title: Re: Copiar arrays de strings
Post by: Drumpi on December 10, 2010, 01:21:20 AM
Cierto, las structs sin corchetes apuntan al primer elemento, eso es una feature existente desde DIV. Creo recordar que me sorprendión que Fenix fuera capaz de distinguir cuándo se quería copiar el primer elemento o el array completo perfectamente.

Si las strings se pueden usar con nodos en lugar de con punteros, problema resuelto, ya puedo seguir pensando en el editor de texto :D
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 10, 2010, 08:43:45 AM
creo que ya tengo la solucion, he tenido que tocar mucho, agregar una nueva funcion interna a nivel sysproc (dcb), con lo cual los nuevos dcb no seran ya compatibles con los viejos, sin embargo los viejos pueden correr en el nuevo runtime.

necesito gente que se ofrezca para hacer pruebas, asignaciones de arrays de todo tipo, asignar datos no array, probar con punteros a elementos, variables array de diferentes tipos, etc. tambien operaciones de incremento, operaciones +=, -=, /=, *=, etc.
hay que probarlo bien para darlo por bueno.

demas esta que debo decir que ya no se podra acceder al primer elemento de un array con solo poner su nombre, se tiene que hacer elemento[0] y a su address &elemento o &elemento[0], estaba mal realmente que se acceda sin el indice, sin embargo los dcb ya compilados con el viejo compilador funcionaran sin poner
Title: Re: Copiar arrays de strings
Post by: FreeYourMind on December 10, 2010, 09:48:20 AM
Pues ya conoces a algunos de tus betatester xD
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 10, 2010, 07:40:35 PM
aca esta free http://betatester.bennugd.org/snapshot/experimental/

por favor, algun otro que pruebe sus programas, mas alla de las pruebas pedidas, me interesa el funcionamiento en general, que no haya ningun comportamiento extraño.

gracias.
Title: Re: Copiar arrays de strings
Post by: Windgate on December 10, 2010, 07:44:21 PM
He probado a asignar una string a un array de char y me ha dado error de ejecución, que lo sepas :D

La string era de un sólo carácter así que no es problema de que no entrase.
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 10, 2010, 07:49:15 PM
Quote from: Windgate on December 10, 2010, 07:44:21 PM
He probado a asignar una string a un array de char y me ha dado error de ejecución, que lo sepas :D

La string era de un sólo carácter así que no es problema de que no entrase.


import "mod_say";
import "mod_mem";

private
    char s1[10]="hola";
    char s2[10];

    int lala[1][2]= 1, 2, 3, 4, 5, 6;
    int lele[3][2];
    int *lili;

    char s3[20];
    string s4 = "bye";

string sa1[10] = "hola", "mundo", "prueba", "1";
string sa2[10] = "1", "2", "3", "4", "5", "6", "7";
i;
begin
    s2 = s1;
    say(s2);

    lele[0] = lala[1];

    say(lele[0][0]);
    say(lele[0][1]);

    lili = &lala[1][1];
say(lili);
say(*lili);
    sa2 = sa1;
    for( i = 0; i < 11; i++ )
        say( "sa2="+ sa2[i]);
    end
say(&lele);
say(&lele[0]);

s3 = "hola";
say(s3);

s3 = s4;
say(s3);

end


a mi me funciona perfecto.
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 10, 2010, 07:50:43 PM
puede que hay armado mal el pack, voy a revisar nuevamente, el pack.

EDIT: Lo chequee, funciona perfecto, cuidado que los nuevos dcb no funcionan con el viejo runtime, si lo intentas correr con el viejo te da runtime error
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 10, 2010, 08:12:49 PM
por favor, insisto que todos prueben, porque si lo doy por bueno y no lo es, nos perjudicamos todos, es un cambio muy importante a nivel interno.
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 11, 2010, 04:22:44 PM
bueno, lo han probado y funciona todo perfecto? subo al svn? despues no hay reclamos si no funcionan sus proyectos.
Title: Re: Copiar arrays de strings
Post by: FreeYourMind on December 11, 2010, 04:27:50 PM
No deberias tener tanta prisa, danos una semana (yo ando liado con mas cosas y esta prueba requiere calma), o tienes tanta prisa para que ? Entiendo que te guste actualizar el Svn pero tambien lo actualizas demasiado, por cambiar una linea de código ya estas creando una nueva revision!
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 11, 2010, 04:31:44 PM
ojala fuera 1 linea de codigo... tuve que cambiar mucho.

ok, espero unos dias mas.
Title: Re: Copiar arrays de strings
Post by: blostec on December 11, 2010, 04:59:26 PM
Yo estoy haciendo algunas pruebas, luego te comento.
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 11, 2010, 05:17:44 PM
gracias!
Title: Re: Copiar arrays de strings
Post by: blostec on December 11, 2010, 07:56:03 PM
Me ocurre algo raro, si pongo:

Program prueba_arrays;

import "mod_key";
import "mod_proc";
import "mod_text";
import "mod_wm";

PRIVATE
   
    char cadena5[4];
    char cadena3[2]="a", "b","c";

BEGIN

cadena5[1]=cadena3[2];
write(0,10,10,0,cadena5[1]);

while (!(key(_esc)))
     frame;
end

let_me_alone();

END


me sale el error: "Data type not accepted here, found "b" en la linea donde declaro la cadena3


Y si lo hago así:

Program prueba_arrays;

import "mod_key";
import "mod_proc";
import "mod_text";
import "mod_wm";

PRIVATE
   
    char cadena5[4];
    char cadena3[]="a", "b","c";

BEGIN

cadena5[1]=cadena3[2];
write(0,10,10,0,cadena5[1]);

while (!(key(_esc)))
     frame;
end

let_me_alone();

END



Compila pero me muestra la "b" cuando debería mostrar la "c"
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 11, 2010, 08:23:46 PM
es correcto que eso pase, porque estas haciendo un mal uso de los char, lo malo es que te permita declararlos asi y no de error...

los array de chars son strings, entonces, en tu caso, el array declarado asi es...

a 0x00 b 0x00 c x00

proba lo siguiente



Program prueba_arrays;

import "mod_key";
import "mod_say";
import "mod_string";

PRIVATE

    char cadena5[4];
    char cadena3[]="a", "b","c";

BEGIN

cadena5[1]=cadena3[2];

say(cadena5[1]);

say(asc(cadena3[0]));
say(asc(cadena3[1]));
say(asc(cadena3[2]));
say(asc(cadena3[3]));
say(asc(cadena3[4]));
say(asc(cadena3[5]));
say(cadena3);
say(sizeof(cadena3));

END
Title: Re: Copiar arrays de strings
Post by: blostec on December 11, 2010, 08:32:28 PM
Con tu código sigue sin funcionar bien, muestra:


b
97
0
98
0
99
0
a
6


Entonces no se pueden declarar tablas de caracteres? Pensándolo bien tampoco es que tengan mucho sentido, pero era por probar combinaciones.
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 11, 2010, 08:33:47 PM
pero si vos queres arreglos de arrays de la forma que lo estas queriendo referencias deberia ser algo asi...


Program prueba_arrays;

import "mod_say";
import "mod_string";

PRIVATE

   char cadena5[4];
   char cadena3[2][0]="a", "b","c";

BEGIN

cadena5[1]=cadena3[2];

say(cadena5[1]);

say(cadena3[0]);
say(cadena3[1]);
say(cadena3[2]);

say(sizeof(cadena3));
say(sizeof(cadena3[0]));
say(sizeof(cadena3[1]));
say(sizeof(cadena3[2]));

END


aunque el resultado pareciera loco, pero no lo es, la cosa es que al no tener \0 y estar en el mismo contexto/variable se imprimen todos.

mira este otro codigo


Program prueba_arrays;

import "mod_say";
import "mod_string";

PRIVATE

   char cadena1[2]="abc";
   char cadena2[2]="def";

BEGIN


say(cadena1[0]);
say(cadena1[1]);
say(cadena1[2]);

say(sizeof(cadena1));

END
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 11, 2010, 08:35:03 PM
Quote from: blostec on December 11, 2010, 08:32:28 PM
Con tu código sigue sin funcionar bien, muestra:


b
97
0
98
0
99
0
a
6


Entonces no se pueden declarar tablas de caracteres? Pensándolo bien tampoco es que tengan mucho sentido, pero era por probar combinaciones.

si funciona bien, al ser "[]" sin tamaño definido, "a" significa "a" + 0, y lo mismo con todos.

creo que lo que esta mal es que te deje declarar el ultimo elemento de esa forma.
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 11, 2010, 08:57:55 PM
Quote from: SplinterGU on December 11, 2010, 08:33:47 PM

Program prueba_arrays;

import "mod_say";
import "mod_string";

PRIVATE

    char cadena5[4];
    char cadena3[2][0]="a", "b","c";

BEGIN

cadena5[1]=cadena3[2];

say(cadena5[1]);

say(cadena3[0]);
say(cadena3[1]);
say(cadena3[2]);

say(sizeof(cadena3));
say(sizeof(cadena3[0]));
say(sizeof(cadena3[1]));
say(sizeof(cadena3[2]));

END


pensandolo bien, este codigo no es correcto esto... creo que aca tengo algo mal, voy a revisar la generacion de opcodes...

y 2, no deberia permitir esto:

char lala[]="a", "b", "c";
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 11, 2010, 09:26:41 PM
Quote from: SplinterGU on December 11, 2010, 08:57:55 PM
Quote from: SplinterGU on December 11, 2010, 08:33:47 PM

Program prueba_arrays;

import "mod_say";
import "mod_string";

PRIVATE

    char cadena5[4];
    char cadena3[2][0]="a", "b","c";

BEGIN

cadena5[1]=cadena3[2];

say(cadena5[1]);

say(cadena3[0]);
say(cadena3[1]);
say(cadena3[2]);

say(sizeof(cadena3));
say(sizeof(cadena3[0]));
say(sizeof(cadena3[1]));
say(sizeof(cadena3[2]));

END


pensandolo bien, este codigo no es correcto esto... creo que aca tengo algo mal, voy a revisar la generacion de opcodes...

y 2, no deberia permitir esto:

char lala[]="a", "b", "c";

vuelvo a rectificarme, el ejemplo, esta bien...

lo que queda mal es no deberia permitir asignar asi a chars sin dimension... eso tendre que corregirlo.
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 11, 2010, 09:39:19 PM
corregido, ya no deja definir asi:

char lala[]="a", "b", "c";
Title: Re: Copiar arrays de strings
Post by: DjSonyk on December 11, 2010, 10:13:15 PM
Quote from: SplinterGU on December 11, 2010, 09:39:19 PM
corregido, ya no deja definir asi:

char lala[]="a", "b", "c";

¿Entoces hay que declarar en todas las matrices la dimension obligatoriamente?
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 11, 2010, 11:52:11 PM
no, los char[], son strings... en ese caso, si pones un char [], tenes que poner 1 sola string.
Title: Re: Copiar arrays de strings
Post by: blostec on December 12, 2010, 11:31:45 AM
A ver si lo entiendo, siento ser tan pesado.

Esto no se puede hacer:

char cadena1[4]="a", "b", "c", "d", "e";

Se debe poner declarando siempre la dimensión? :

char cadena1[4][0]="a", "b", "c", "d", "e";

Title: Re: Copiar arrays de strings
Post by: Drumpi on December 12, 2010, 02:43:49 PM
En teoría, si queremos un array de 4 char, debráimos hacerlo de una de estas dos formas (al menos, es como se ha hecho hasta ahora:

char cadena[]= "abcd";
char cadena[]= 'a','b','c','d';

Hacerlo así:
char cadena1[4]="a", "b", "c", "d", "e";
significa asignar 5 cadenas. En todo caso sería algo como:
char cadena1[4]="a"+"b"+"c"+"d"+"e";

Corregidme si me equivoco.
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 12, 2010, 04:25:17 PM
esta mal, los char [] son strings fijas...

esta bien tu ultimo ejemplo donde usas +
Title: Re: Copiar arrays de strings
Post by: Drumpi on December 12, 2010, 04:57:51 PM
Quote from: SplinterGU on December 12, 2010, 04:25:17 PM
esta mal, los char [] son strings fijas...

Salvo en el momento de la definición, donde son del tamaño que se indique en la asignación, como todos los arrays ;D
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 12, 2010, 10:34:34 PM
Quote from: Drumpi on December 12, 2010, 04:57:51 PM
Quote from: SplinterGU on December 12, 2010, 04:25:17 PM
esta mal, los char [] son strings fijas...

Salvo en el momento de la definición, donde son del tamaño que se indique en la asignación, como todos los arrays ;D

siguen siendo strings fijas... no podes cambiar el tamaño...
Title: Re: Copiar arrays de strings
Post by: Windgate on December 14, 2010, 12:47:08 PM
Yo me estoy volviendo loco para pasar una string a un array de char, si se os ha pasado ya por la cabeza la forma de hacerlo fácilmente se agradecerá con un karma :P
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 14, 2010, 01:35:17 PM
Quote from: Windgate on December 14, 2010, 12:47:08 PM
Yo me estoy volviendo loco para pasar una string a un array de char, si se os ha pasado ya por la cabeza la forma de hacerlo fácilmente se agradecerá con un karma :P

char lala[10];
string baba;

...

baba = "esto es simple";
lala = baba; // aca asigno una string a un array de char
lala = "esto tambien es simple"; // aca tambien asigno una string a un array de char

...

wind, no entiendo que es lo que no te sale...
Title: Re: Copiar arrays de strings
Post by: DjSonyk on December 14, 2010, 01:37:09 PM
No se supone que un string es un array de char.... yo tampoco entiendo que no le sale....aunque tratandose de Wind..... igual esta intentando una barbarie,que no es lo mismo que esta imitando a una barbie... xP
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 14, 2010, 04:10:33 PM
Quote from: DjSonyk on December 14, 2010, 01:37:09 PM
No se supone que un string es un array de char.... yo tampoco entiendo que no le sale....aunque tratandose de Wind..... igual esta intentando una barbarie,que no es lo mismo que esta imitando a una barbie... xP

bueno, strings y arrays de chars no son lo mismo, pero un se puede asignar a la otra sin problemas.

barbie... jajaja... creo que wind le gustan las barbies, pero de carne y hueso...
Title: Re: Copiar arrays de strings
Post by: Drumpi on December 14, 2010, 06:03:40 PM
Las strings son arrays de char, pero de tamaño indefinido (usan punteros).
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 14, 2010, 08:13:53 PM
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[].
Title: Re: Copiar arrays de strings
Post by: FreeYourMind on December 14, 2010, 08:19:28 PM
Drumpi no hablaba de BennuGD  :D
Title: Re: Copiar arrays de strings
Post by: FreeYourMind on December 14, 2010, 09:33:56 PM
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

...
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 15, 2010, 12:48:36 AM
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.
Title: Re: Copiar arrays de strings
Post by: 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....
Title: Re: Copiar arrays de strings
Post by: 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.
Title: Re: Copiar arrays de strings
Post by: DjSonyk on December 15, 2010, 01:15:16 AM
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...
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 15, 2010, 01:31:43 AM
puede que sea, lua, no recuerdo, pero hacerlo en bennu es una locura...
Title: Re: Copiar arrays de strings
Post by: DjSonyk on December 15, 2010, 01:40:57 AM
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....
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 15, 2010, 03:22:41 AM
ok, ya te entendi...
Title: Re: Copiar arrays de strings
Post by: 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.
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 15, 2010, 05:10:56 AM
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...
Title: Re: Copiar arrays de strings
Post by: FreeYourMind on December 15, 2010, 06:30:54 AM
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
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 15, 2010, 12:45:59 PM
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
...
Title: Re: Copiar arrays de strings
Post by: FreeYourMind on December 15, 2010, 02:56:48 PM
Eso que has puesto es lo primero que he dicho, has creado 3 array's en la memoria global, lo que quiero evitar, es mejor poner if's mas laboriosos con mas contenido que hacer eso...
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 15, 2010, 03:06:04 PM
Quote from: FreeYourMind on December 15, 2010, 02:56:48 PM
Eso que has puesto es lo primero que he dicho, has creado 3 array's en la memoria global, lo que quiero evitar, es mejor poner if's mas laboriosos con mas contenido que hacer eso...

no te he dicho que no es lo mismo que pusiste primero...

por otro lado, eso se usa en todos lados, toda aplicacion profesional tiene presets o plantillas de valores que copian a sus areas de trabajo, pero alla tu, has lo que mejor te de.
Title: Re: Copiar arrays de strings
Post by: FreeYourMind on December 15, 2010, 03:10:27 PM
Lo se, pero cuando son 30, 40 arrays de 5 strings cada, logicamente ahorras algo de memoria si lo haces por if's usando ssolo uno....
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 15, 2010, 03:13:10 PM
no, absolutamente no... no ahorras memoria, ni cpu, por el contrario, consumis mucho mas en ambos puntos.
Title: Re: Copiar arrays de strings
Post by: FreeYourMind on December 15, 2010, 03:22:54 PM
Pruebas, cuanta memoria ocupa una sentencia if ?
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 15, 2010, 03:41:02 PM
no es solo la sentencia if, son las sentencias adicionales de asignacion, el loop de cada sentencia, etc.
Title: Re: Copiar arrays de strings
Post by: Drumpi on December 15, 2010, 07:19:06 PM
Quote from: SplinterGU on December 14, 2010, 08:13:53 PM
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[].

No me has entendido: lo que quería decir es que una string es un array de chars (no arrays a char), pero que no tiene un tamaño definido. Llámalo objeto o como quieras, pero dentro de ese objeto se manejan punteros (y he supuesto que se usan como explico en el hilo de "punteros como arrays para novatos") pues es lo que se usa para manejar memoria dinámica.
Title: Re: Copiar arrays de strings
Post by: SplinterGU on December 15, 2010, 08:44:13 PM
Quote from: Drumpi on December 15, 2010, 07:19:06 PM
Quote from: SplinterGU on December 14, 2010, 08:13:53 PM
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[].

No me has entendido: lo que quería decir es que una string es un array de chars (no arrays a char), pero que no tiene un tamaño definido. Llámalo objeto o como quieras, pero dentro de ese objeto se manejan punteros (y he supuesto que se usan como explico en el hilo de "punteros como arrays para novatos") pues es lo que se usa para manejar memoria dinámica.

te he entendido, y no, no son punteros, no puedes acceder a una string por medio de un puntero... no es un array de char... por favor, no confundamos a la gente.