error rarisimo

Started by lord103, July 03, 2010, 08:15:27 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

lord103

Bueno, tengo un puntero de strings y al acceder a el varias veces me aparece esto:

Assertion failed: < string alloated && code > =0, file strings.c line 264. contacte con el equipo de soporte de la aplicacion.

tambien me borra los elementos del puntero, solo deja el primero y ya.

un bug de bennu, o cometi un supererrordeprogramacion.

FreeYourMind

Se nota que es un problema interno del modulo y que se tratá internamente, lo curioso es que Splinter tuvierá este tipo de mensajes en Bennu

"contacte con el equipo de soporte de la aplicacion".

Curioso :)

SplinterGU

codigo completo...

deberias contactar al equipo de soporte de la aplicacion...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Quote from: SplinterGU on July 03, 2010, 11:41:16 AM
deberias contactar al equipo de soporte de la aplicacion...

:D

DjSonyk

Buenas , como siempre se dice sin el codigo no se puede ver donde esta el error...
Aun asi ,si que e visto ese mensaje alguna vez, y el problema no es de Bennu, sino que se esta intentando hacer algo raro con la cadena de texto, yo creo , seguramente tienes algo mal,no te lo puedo asegurar al 100%,pero si que creo que tienes algun gazapo en el codigo que te lanza ese error....
Si publicas el codigo te lo hecho un vistazo.

SplinterGU

Quote from: DjSonyk on July 03, 2010, 03:34:00 PM
Buenas , como siempre se dice sin el codigo no se puede ver donde esta el error...
Aun asi ,si que e visto ese mensaje alguna vez, y el problema no es de Bennu, sino que se esta intentando hacer algo raro con la cadena de texto, yo creo , seguramente tienes algo mal,no te lo puedo asegurar al 100%,pero si que creo que tienes algun gazapo en el codigo que te lanza ese error....
Si publicas el codigo te lo hecho un vistazo.

asi es, pero antes de dar un diagnostico prefiero tener codigo
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

lord103

for(contador_lineas=0;contador_lineas<cantidad_lineas;contador_lineas++)
   posicion_tecleo_x=0;
   posicion_tecleo_y=contador_lineas*(fuente_escribir.alto+espacio_vertical);
   cadena_teclear=lineas_texto[contador_lineas];
   longitud_cadena=len(cadena_teclear);
   for(i=0;i<longitud_cadena;i++)
      grafico_letra=cadena_teclear-31;
      teclear(0,fuente_escribir.file,graph,grafico_letra,posicion_tecleo_x,posicion_tecleo_y);
           posicion_tecleo_x+=fuente_escribir.ancho_letras[cadena_teclear-32];
      frame(demora);
   end      
end

lo que hace esto es escribir un mensaje con graficos. La variable grafico letra indica el grafico dentro del fpg que tiene las letras, y la funcion teclear escribe esa letra. Crei que el error era por que utilizo un caracter para hacer una resta, pero incluso he utilizado variables alternas para hacer esta operacion y me sigue saliendo lo mismo. Hasta ensaye quitar la resta y nada. Que pasa, ¿no se supone que los caracteres tambien son bytes?.

SplinterGU

lord103, ese codigo no sirve para diagnosticar, siempre es importantisimo las declaraciones de las variables, los modulos que usas y que otras cosas se hacen, tenes que pasar un codigo completo compilable.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

lord103

#8
Ok. Aqui dejo el codigo

edito: corregi el grafico de la fuente, lo vuelvo a subir.

DjSonyk

El error esta en esa en este say().
[code language="bennu"]
say("termine");
   for(contador_lineas=0;contador_lineas<cantidad_lineas;contador_lineas++)
      
      say(lineas_texto[contador_lineas]); // ESTO ESTA MAL
                           say(contador_lineas);                    // Con esto te vale   
   end[/code]

Ya que estas intentando escribir String con un puntero ,de ahi que te de el error,por lo demas parece que va bien ,quitando que tienes que mejorar el espacio ,se interpone O de "Hola" con M de "Mundo"...
Tambien aconsejo de poner mas comentarios ,ya que os aclarareis mejor y se puede interpretar mejor el codigo por los demas...
Saludos.

Windgate

¿lineas_texto está declarado como array de POINTER o como string?

Si está declarado como array de POINTER lo único que debería suceder es que se muestren los valores de las direcciones de memoria.

PD: No he mirado el código aún, acabo de ver el hilo.
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

DjSonyk

Esta declarado como un string pointer...

Windgate

Entonces sí, es un array de POINTER:

say( * ( lineas_texto [ contador_lineas ] ) );

Solucinaría el problema, ya que mostraría el dato apuntado por ese POINTER.
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

no, no, esta bien que ponga lineas_texto[ indice ], el problema es que no podes acceder a un indice que previamente no le hayas hecho una asignacion de string, ni hablar que tambien sea a un area que este alocada. Y las asignaciones a esa string deben ser directamente sobre el puntero, no se puede usar para acceder a otra area, por ejemplo otro array de strings.

usar "string *" es algo muy delicado, no sugiero usarlo si no sabe lo que se hace.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

lord103

en la linea 188 puse cadena_teclear=lineas_texto[contador_lineas]; y aun asi sigue habiendo error. Lo que me parece extraño es que funcionara cuando hay solo una linea de texto pero cuando hay mas no.

al final tuve que quitar los punteros y realizar todo con un solo string.