Codigo de retorno en funciones write

Started by Arcontus, February 21, 2018, 09:22:49 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Arcontus

Hola chicos,

creo que sería ideal que las funciones write y derivadas no devolvieran jamás 0 como ID de texto ya que induce a pensar que no está correctamente inicializada y de cara al delete_text pues estás más seguro si el valor no es 0 de que estás borrando lo que toca.


Write Returns

INT : TextID
-1     - Error. The text could not be obtained or was empty.
>=0     - The TextID of the text.


Un saludo!
5Leaps, el primer juego comercial desarrollado para BennuGD. http://www.5leaps.com

SplinterGU

si, pero arruinaria todo lo ya existente...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Arcontus

Quote from: SplinterGU on February 21, 2018, 02:53:34 PM
si, pero arruinaria todo lo ya existente...

No entiendo porque, actualmente habria que hacer un
if (txtid >= 0) delete_text(txtid); END

Esto seguiria funcionando con normalidad, pero a partir de ahora el codigo de comprobación sería:
if (txtid > 0) delete_text(txtid); END

La idea es no asignar valor a 0, y respetar el código de error -1.

Quizas SplinterGU te refieras a otra casuistica que no entendí.
5Leaps, el primer juego comercial desarrollado para BennuGD. http://www.5leaps.com

SplinterGU

si seguiria siendo -1 error, en que cambia que se use el 0 como un id valido?
bennugd no es el unico lenguaje donde -1 indica error (y 0 un id valido), en C por ejemplo, muchisimas funciones retornan -1 (o valor negativo) como error.
y nadie se queja, creo que es una cuestion de practicas de programacion, si se tiene una variable que puede darse el caso que llegue a ser usada sin inicializar, se deberia ser prolijo e inicializarla con un valor adecuado en la declaracion o creacion de la misma...
cambiar eso implicaria cambiarlo en casi todas las funciones del lenguaje, para que tenga coherencia...

quizas se podria implementar una instruccion tipo #pragma, para modificar ciertas cosas del lenguaje, y por ejemplo, poder especificar el MIN_ID_VALUE... pero esto tambien implicaria un procesamiento extra, aunque minimo, en todas las funciones que retornan IDs.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Arcontus

Quote from: SplinterGU on February 21, 2018, 11:26:55 PM
si seguiria siendo -1 error, en que cambia que se use el 0 como un id valido?
bennugd no es el unico lenguaje donde -1 indica error (y 0 un id valido), en C por ejemplo, muchisimas funciones retornan -1 (o valor negativo) como error.
y nadie se queja, creo que es una cuestion de practicas de programacion, si se tiene una variable que puede darse el caso que llegue a ser usada sin inicializar, se deberia ser prolijo e inicializarla con un valor adecuado en la declaracion o creacion de la misma...
cambiar eso implicaria cambiarlo en casi todas las funciones del lenguaje, para que tenga coherencia...

quizas se podria implementar una instruccion tipo #pragma, para modificar ciertas cosas del lenguaje, y por ejemplo, poder especificar el MIN_ID_VALUE... pero esto tambien implicaria un procesamiento extra, aunque minimo, en todas las funciones que retornan IDs.

Ok, entiendo. Como bien dices en C -1 suele indicar un error, pero yo lo comentaba porque en Bennu (corrigeme si me equivoco) las variables se inicializan a 0, a diferencia de C donde es obligatorio inicializarlas para poder trabajar con ellas. Es por esta razon que al valer 0 de inicio en Bennu puede no quedar claro si se ejecutó el write o no. Claro que siempre podemos inicializar txtid a -1 y sería lo mismo.

Pero como dices en realidad no es un problema, solo una sugerencia.
5Leaps, el primer juego comercial desarrollado para BennuGD. http://www.5leaps.com

SplinterGU

En BennuGD es cierto se inicializan a 0... en C si no la inicializas tu, no se inicializan, no es obligatorio hacerlo.

claro, la idea es inicializarlas a -1.

Si, entiendo la sugerencia, al principio pense que decias de cambiar a 0 el resultado por error, pero si, entiendo, no esta mal la idea, pero deberia cambiarse todo para que tenga coherencia.

lo tendre en mente para cuando implemente configuracion de comportamientos del core.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Arcontus

#6
Quote from: SplinterGU on February 22, 2018, 12:07:16 AM
En BennuGD es cierto se inicializan a 0... en C si no la inicializas tu, no se inicializan, no es obligatorio hacerlo.

claro, la idea es inicializarlas a -1.

Si, entiendo la sugerencia, al principio pense que decias de cambiar a 0 el resultado por error, pero si, entiendo, no esta mal la idea, pero deberia cambiarse todo para que tenga coherencia.

lo tendre en mente para cuando implemente configuracion de comportamientos del core.
Para que quede claro para los lectores del foro, he estado hablando con SplinterGU y la función write no devuelven 0 si consiguió pintar correctamente.
Solo devuelve 0 cuando hubo un error al pintar (sobrepasar el número máximo de writes por ejemplo).
Esto simplifica bastante el código y evita tener que inicializar a -1 las variables de control de id de texto.

PD: A fecha de hoy, la docu de la wiki a este respecto está mal y debería corregirse.

Un saludo!
5Leaps, el primer juego comercial desarrollado para BennuGD. http://www.5leaps.com

panreyes

Quote from: Arcontus on June 20, 2018, 08:13:15 AM
Quote from: SplinterGU on February 22, 2018, 12:07:16 AM
En BennuGD es cierto se inicializan a 0... en C si no la inicializas tu, no se inicializan, no es obligatorio hacerlo.

claro, la idea es inicializarlas a -1.

Si, entiendo la sugerencia, al principio pense que decias de cambiar a 0 el resultado por error, pero si, entiendo, no esta mal la idea, pero deberia cambiarse todo para que tenga coherencia.

lo tendre en mente para cuando implemente configuracion de comportamientos del core.
Para que quede claro para los lectores del foro, he estado hablando con SplinterGU y la función write no devuelven 0 si consiguió pintar correctamente.
Solo devuelve 0 cuando hubo un error al pintar (sobrepasar el número máximo de writes por ejemplo).
Esto simplifica bastante el código y evita tener que inicializar a -1 las variables de control de id de texto.

PD: A fecha de hoy, la docu de la wiki a este respecto está mal y debería corregirse.

Un saludo!
Si quieres acceso al wiki para editar y cambiarlo tú mismo, sólo tienes que pedirlo :)