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.

FreeYourMind

Pues ya conoces a algunos de tus betatester xD

SplinterGU

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.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

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.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

SplinterGU

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.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

#19
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
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

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.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

bueno, lo han probado y funciona todo perfecto? subo al svn? despues no hay reclamos si no funcionan sus proyectos.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

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!

SplinterGU

ojala fuera 1 linea de codigo... tuve que cambiar mucho.

ok, espero unos dias mas.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

blostec

Yo estoy haciendo algunas pruebas, luego te comento.

SplinterGU

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

blostec

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"

SplinterGU

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
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

blostec

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.

SplinterGU

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
Download Lastest BennuGD Release: http://www.bennugd.org/node/2