Autor Tema: Codigo de retorno en funciones write  (Leído 1355 veces)

Arcontus

  • Sr. Member
  • ****
  • Mensajes: 278
  • Karma: 9
Codigo de retorno en funciones write
« en: Febrero 21, 2018, 09:22:49 am »
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.

Código: [Seleccionar]
Write Returns

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

Un saludo!
« última modificación: Febrero 21, 2018, 09:25:14 am por Arcontus »

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12755
  • Karma: 375
Re:Codigo de retorno en funciones write
« Respuesta #1 en: Febrero 21, 2018, 02:53:34 pm »
si, pero arruinaria todo lo ya existente...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Arcontus

  • Sr. Member
  • ****
  • Mensajes: 278
  • Karma: 9
Re:Codigo de retorno en funciones write
« Respuesta #2 en: Febrero 21, 2018, 10:43:23 pm »
si, pero arruinaria todo lo ya existente...

No entiendo porque, actualmente habria que hacer un
Código: [Seleccionar]
if (txtid >= 0) delete_text(txtid); END
Esto seguiria funcionando con normalidad, pero a partir de ahora el codigo de comprobación sería:
Código: [Seleccionar]
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í.

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12755
  • Karma: 375
Re:Codigo de retorno en funciones write
« Respuesta #3 en: Febrero 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.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Arcontus

  • Sr. Member
  • ****
  • Mensajes: 278
  • Karma: 9
Re:Codigo de retorno en funciones write
« Respuesta #4 en: Febrero 21, 2018, 11:51:50 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.

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12755
  • Karma: 375
Re:Codigo de retorno en funciones write
« Respuesta #5 en: Febrero 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.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Arcontus

  • Sr. Member
  • ****
  • Mensajes: 278
  • Karma: 9
Re:Codigo de retorno en funciones write
« Respuesta #6 en: Junio 20, 2018, 08:13:15 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!
« última modificación: Junio 20, 2018, 08:14:54 am por Arcontus »

panreyes

  • Administrator
  • *****
  • Mensajes: 2153
  • Karma: 74
    • panreyes.com
Re:Codigo de retorno en funciones write
« Respuesta #7 en: Junio 20, 2018, 10:22:31 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 :)