Bennu Game Development

Foros en Español => Proyectos => Mensaje iniciado por: Drumpi en Abril 08, 2011, 07:11:41 pm

Título: String_class
Publicado por: Drumpi en Abril 08, 2011, 07:11:41 pm
Hola a todos:

Pues nada, os subo una parte de mi último código que puede que os sea útil.
Son un par de ficheros de código Bennu que nos permite manejar listas de strings. Dado que no se pueden usar arrays de strings (ya sean estáticos o dinámicos) sin algún que otro problema, comprensible por la propia naturaleza cambiante de este tipo de dato, pues os ofrezco esta solución.

Aunque usa una lista enlazada, no os tendreis que pelear con punteros ni nada de eso (o casi, no puedo evitar la necesidad de pasar punteros a las funciones para modificar las listas). Os creais un puntero al nuevo tipo STRING_NODE, y luego sólo teneis que usar STRING_ADD para añadir o STRING_DELETE_N para borrar (o STRING_DELETE_ALL para borrarla entera).

Viene un fichero de ejemplo con el uso de diversas funciones, y algunos comentarios al principio de las funciones más complejas de entender. Lo siento, era de uso interno y no hice documentación, y ahora no tengo tanto tiempo como antes para hacerla, pero no creo que os resulte muy difícil de usar, si es que lo quereis.
Creo que se asemeja mucho al uso de listas de clases de Java, aunque no os lo puedo confirmar porque aun no he empezado a trabajar con ellas ^^U

Usos: pues si escribís textos en diversas líneas (para texto que se modifica, es decir, escrito con WRITE_STRING, STRING_GET_POINTER es vuestra salvación), o teneis que pasar un número indefinido de strings a una función, o simplemente quereis hacer una lista de nombres, os facilitará mucho la vida.

Espero que os sea útil.
Título: Re: String_class
Publicado por: SplinterGU en Abril 08, 2011, 07:32:32 pm
acaBO de ver el codigo, no podes hacer esto de forma segura.

ya avise.
Título: Re: String_class
Publicado por: l1nk3rn3l en Abril 08, 2011, 08:58:24 pm
gracias
Título: Re: String_class
Publicado por: JaViS en Mayo 12, 2011, 06:01:55 pm
buenas, no entendí el comentario de Splinter.

gracias :)
Título: Re: String_class
Publicado por: Drumpi en Mayo 12, 2011, 06:55:09 pm
Yo tampoco lo entendí, pero en su momento no pregunté (supongo que tendría la cabeza como un bombo por algo ^^U).
Título: Re: String_class
Publicado por: SplinterGU en Mayo 13, 2011, 03:37:40 pm
ya corregi... :D
Título: Re: String_class
Publicado por: JaViS en Mayo 13, 2011, 05:53:09 pm
bien... y la justificacion? un poco de explicacion no vendria mal.
Título: Re: String_class
Publicado por: SplinterGU en Mayo 13, 2011, 06:02:15 pm
ya lo explique muchas veces... el compilador no puede saber que lo que tenes en un puntero a string es una string o un valor basura de la memoria alocada, tampoco puede saber si la data contenida en un puntero sera data que se use en otro lado, por ende no se puede basar en la data contenida o apuntada por un puntero a string para liberarla cuando muere el proceso; incluso tampoco puede saber si un puntero cambia de posicion si la data apuntada previamente es correspondiente a un string a basura.

hay miles de cosas, que son mas que logicas.

por favor, usen el search, sino estamos repitiendo las mismas respuestas por todo el foro. (no hace falta disculparse por esto, ni tampoco es algo dirigido a una persona, muchos preguntan lo que ya se explico muchas veces)
Título: Re: String_class
Publicado por: Drumpi en Mayo 13, 2011, 07:34:06 pm
Ya, pero lo que yo hice fue tener una lista de nodos, en la que cada uno tiene una string y un puntero a la siguiente posición. A la hora de borrar hago que la string valga "" antes de hacer el FREE, por lo que no deberían existir esos problemas a la hora de liberar memoria.
Y tampoco a la hora de usarla, ya que lo que tengo son estructuras, cada una con una variable tipo string, que incluso se inicializan en la creación de la misma.
La única pega que podría haber es que al cambiar el contenido de una string, al hacerla más larga, le pise memoria a otra variable (pero eso ya sería culpa de cómo se gestiona internamente la memoria, o las strings, y sucedería igual aunque no usase estas estructuras).

Vamos, que medité largamente cómo hacerlo lo más robusto posible (una de mis noches de insomnio exclusivamente para esto :D). Otra cosa es que a la hora de escribir el código haya metido la pata en mi inexperiencia con la programación en general.
Título: Re: String_class
Publicado por: SplinterGU en Mayo 13, 2011, 07:39:35 pm
yo no apostaria tanto a eso que estas suponiendo.

que lo pongas a "", no significa que la string se libere, o que no "" no sea una string.

ya lo comente.