Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: alicesimu on November 14, 2016, 12:42:03 AM

Title: No funciona bien los includes, decepcionada
Post by: alicesimu on November 14, 2016, 12:42:03 AM
Estoy decepcionada con el comportamiento de includes: bueno como el compilador los relaciona entre si...

por ejemplo:

Programa juego.prg vincula otros prg...
include "menus.prg";
include "elementos.prg";


juego.prg
contiene esta variable global:
int mis_datos;

Hay un proceso dentro de menus.prg
proces menu_titulo();
y necesita acceder a la variable global mis_datos; del principal juego.prg

Esto al compilar NO ME LO RECONOCE la variable!!!  >:(

menus.prg:24: error: Unknown identifier ( error in token: "mis_datos" ).
juego.prg: doesn't exist or isn't version 8 DCB compatible

teóricamente, los ficheros include deberían tener acceso las variables globales,locales y procesos/funciones del principal juego.prg
además, otros includes
por ejemplo:

include "menus.prg";
include "elementos.prg";

elementos.prg pueda tener acceso alguna variable global,local que se declara en menus.prg

resumiendo, deberia ser accesible en ambos sentidos, solo el programa_jefe.prg tiene los includes enlazados entre si.
tanto si el programa_jefe.prg necesita aceder alguna variable de algun include.
como si de algun include, necesita aceder algo del programa_jefe.prg
incluso de algun include, necesita aceder un dato de otro include.

Flecha verde: declaran que necesita conectar con include <codig>.prg
Flecha azul: los accesos entre programa_jefe.prg y todos los includes conectados, todos son accesibles entre si.
(http://i.imgur.com/fYaXsnV.jpg)

la idea de los include es poder dividir el PRG principal en varios archivos.prg, para organizarte mejor.
El compilador deberia comprobar todos los includes, y realizar la compilacion final, con todos los PRG juntos, como si de 1 se tratase realmente.

no me puede decir que no reconoce una variable, que se llamó dentro de un include extra.prg, cuando esta declarado en el programa_jefe.prg que es el punto de partida a la hora de compilar.
Title: Re:No funciona bien los includes, decepcionada
Post by: panreyes on November 14, 2016, 01:01:35 AM
No entiendo tu explicación ni el gráfico, pero los includes funcionan perfectamente.

Lo único que estés haciendo esos includes antes de declarar las variables globales. Debes hacerlo en orden, lógicamente.

Esto está mal:

include "otro.prg";
global
variable;
end


Esto está bien:

global
variable;
end
include "otro.prg";
Title: Re:No funciona bien los includes, decepcionada
Post by: SplinterGU on November 14, 2016, 03:12:39 AM
los include funcionan perfectamente como dijo panreyes... el tema es que los estas usando de forma incorrecta... esto es valido para cualquier lenguaje, primero incluyes lo que quieres se vea, y luego lo usas...

no es conveniente incluir el .prg directamente, deberias incluir un .h o .header o como quieras llamarlo, donde solo esten las declaraciones de las cosas que quieras se vean desde otros .prg, y luego incluyes el resto
Title: Re:No funciona bien los includes, decepcionada
Post by: alicesimu on November 14, 2016, 06:17:44 AM
Quote from: panreyes on November 14, 2016, 01:01:35 AM
No entiendo tu explicación ni el gráfico, pero los includes funcionan perfectamente.

Lo único que estés haciendo esos includes antes de declarar las variables globales. Debes hacerlo en orden, lógicamente.

Esto está mal:

include "otro.prg";
global
variable;
end


Esto está bien:

global
variable;
end
include "otro.prg";


ese era mi fallo:
despues de los import...
hacia llamar los includes... <----
y despues declaraba las global, locals....
y al compilar no reconocia las variables....

ahora cambiando el orden:
-import
-global,local
-includes <----
-procesos/funciones.
Title: Re:No funciona bien los includes, decepcionada
Post by: FreeYourMind on November 14, 2016, 08:31:29 AM
espero que con la explicación de splinter ya no te sientas decepcionada
Title: Re:No funciona bien los includes, decepcionada
Post by: Yawin on November 14, 2016, 10:35:56 AM
Para evitar ese error mi modo de trabajar es el siguiente:

- Tengo un .prg llamado global.prg que contiene todas las declaraciones de globales, locales y constantes así como los declares de las funciones y procesos que lo requieran. Este fichero lo incluyo con include justo debajo de los import.

- Tengo un fichero includes que contiene los includes de todos los ficheros y lo incluyo justo debajo de la inclusión de global.prg.

De esta manera me aseguro de tener control sobre el orden en el que se incluyen y declaran las cosas.

Ejemplo: https://github.com/rfstudios/LittleTales/blob/master/includes.prg
Title: Re:No funciona bien los includes, decepcionada
Post by: Drumpi on November 15, 2016, 01:47:21 AM
+1 a lo dicho. Include viene a decirle al compilador "¡oye! copia  aquí el contenido de este fichero".
Y aquí es cuando los conocimientos de otros lenguajes se vuelven útiles: en C, por ejemplo, se tenía los ficheros .h (header) donde se realizaban las declaraciones de variables y métodos, y aparte, los ficheros .c/.cpp con el código en sí.
Yo recomiendo hacer lo mismo en Bennu: por cada código que separes, ten un .h con sus propias declaraciones. Es más, si miras mis códigos, tengo declaraciones de variables globales en muchísimos ficheros diferentes, porque así los tengo separados y sé en qué procesos/funciones los estoy usando, y si en algún momento dejo de usarlos, comento su .h y no tengo que buscar dichas variables en una larga lista de globales. Además, viene de lujo para los "declare", que se utilizan con las variables públicas.

No tenemos clases, pero tenemos includes :D
Title: Re:No funciona bien los includes, decepcionada
Post by: SplinterGU on November 15, 2016, 03:34:31 AM
Quote from: Drumpi on November 15, 2016, 01:47:21 AM
+1 a lo dicho. Include viene a decirle al compilador "¡oye! copia  aquí el contenido de este fichero".
Y aquí es cuando los conocimientos de otros lenguajes se vuelven útiles: en C, por ejemplo, se tenía los ficheros .h (header) donde se realizaban las declaraciones de variables y métodos, y aparte, los ficheros .c/.cpp con el código en sí.
Yo recomiendo hacer lo mismo en Bennu: por cada código que separes, ten un .h con sus propias declaraciones. Es más, si miras mis códigos, tengo declaraciones de variables globales en muchísimos ficheros diferentes, porque así los tengo separados y sé en qué procesos/funciones los estoy usando, y si en algún momento dejo de usarlos, comento su .h y no tengo que buscar dichas variables en una larga lista de globales. Además, viene de lujo para los "declare", que se utilizan con las variables públicas.

No tenemos clases, pero tenemos includes :D

exacto! muy bien explicado Drumpi!
Title: Re:No funciona bien los includes, decepcionada
Post by: alicesimu on November 16, 2016, 09:28:09 AM
pido disculpas, es que me altere, cuando no me dejaba compilar  :'(
para mi es importante usar include para poder organizarme mejor el programa y no liarme.

ahora he aprendido mejor como organizarme gracias a vosotros.
reconozco que hace mucho que no me paso por aqui y perdi el hilo de bennugd, estaba en otro mundo.

siempre es bueno aprender cosas nuevas.
Title: Re:No funciona bien los includes, decepcionada
Post by: SplinterGU on November 16, 2016, 12:23:48 PM
por mi parte no es necesario pedir disculpas.
Title: Re:No funciona bien los includes, decepcionada
Post by: Drumpi on November 16, 2016, 06:56:26 PM
Ni por el mío, para eso está el subforo.
Si vieras las tontadas que he llegado a mostrar por aquí... ^^U

Lo que sí recomiendo, como decía en el otro hilo, es darle un repasito de vez en cuando a la programación básica en C, para no perder las "buenas costumbres" por usar lenguajes de alto nivel. Vale que Java o Bennu te ayudan con cositas, pero no está de más, por ejemplo, inicializar las variables, o usar conversión explícita de tipos :P
Title: Re:No funciona bien los includes, decepcionada
Post by: alicesimu on November 25, 2016, 12:32:55 AM
avandono el uso de los includes sinceramente

como puede ser que me devuelva error en un elemento de un proceso , una variable privada de da error?!

al final tengo esto:

programa_jefe.prg
-declaro los import que necesito
-declaro include "global.prg"; aqui dentro tengo declaradas CONST y GLOBAL (TODAS)
-declaro LOCAL
-include mascosa.prg , contiene procesos...
...
-include mascosa5.prg , contiene procesos...
-declaro PROCESS MAIN(); y empieza el codigo jefe....

NO SE COMO ORGANIZARME LOS DATOS GLOBALES/CONST Y LOS PROCESOS.

pero no quiero volver a la antigua epoca de Div2 que tenia todo en unico PRG gigantesco  :'( :'( :'( :'(
Title: Re:No funciona bien los includes, decepcionada
Post by: FreeYourMind on November 25, 2016, 12:57:16 AM
mete todas las definiciones y variables en el main, y en los includes/ficheros adjuntos, metes procesos (agrupados por tematica o relacion), para que no tengas todo en el main.


yo sigo preferiendo tenerlo todo en el main, cada una lo hace como mas comoda se sienta
Title: Re:No funciona bien los includes, decepcionada
Post by: Drumpi on November 25, 2016, 02:48:02 AM
¿Qué error te da exactamente?
Si te da error porque no reconoce una variable privada, lo más seguro es que se te haya olvidado poner un END en alguna parte ¡La de problemas que he tenido yo por no cerrar un switch! Me da el error en código5.inc y resulta que en código4.inc o en código3.inc he cerrado todos los CASE pero no el SWITCH.
Title: Re:No funciona bien los includes, decepcionada
Post by: alicesimu on November 25, 2016, 07:18:12 AM
Quote from: Drumpi on November 25, 2016, 02:48:02 AM
¿Qué error te da exactamente?
Si te da error porque no reconoce una variable privada, lo más seguro es que se te haya olvidado poner un END en alguna parte ¡La de problemas que he tenido yo por no cerrar un switch! Me da el error en código5.inc y resulta que en código4.inc o en código3.inc he cerrado todos los CASE pero no el SWITCH.

olvidado no...
mas bien sobraba un END justo por encima de la variable privada y no la podia reconocer esa variable...(estaba fuera del proceso)

Solucionado y ejecuta bien.

:-[ :-[ :-[ :-[

si funciono mi estructura, como mencione en el primer post.
Title: Re:No funciona bien los includes, decepcionada
Post by: Drumpi on November 25, 2016, 01:37:29 PM
Queda demostrado: el 80-90% de los bugs que se detectan en el lenguaje, son por culpa del propio programador :D
No te preocupes, a todos nos pasan cosas así ;)
Title: Re:No funciona bien los includes, decepcionada
Post by: alicesimu on November 25, 2016, 03:33:31 PM
Que me deje un END??!!! Es de novata! :-[
Que vergüenza!!

Por ahora mantendré en esa distribución los includes.
Include Globales y conts
Includes de procesos y funciones...
Title: Re:No funciona bien los includes, decepcionada
Post by: FreeYourMind on November 25, 2016, 03:58:56 PM
simulatorone no se olvidaba los END  ::)
Title: Re:No funciona bien los includes, decepcionada
Post by: DCelso on November 25, 2016, 04:37:18 PM
Cierto, y también se sabía su clave.  :o
Title: Re:No funciona bien los includes, decepcionada
Post by: alicesimu on November 25, 2016, 07:38:47 PM
Quote from: DCelso on November 25, 2016, 04:37:18 PM
Cierto, y también se sabía su clave.  :o

no puedo recuperar esa cuenta, aun que le diga que me envien la reactivacion de la contraseña por correo electronico simulatorone@hotmail.com

por que nunca llega dicho email, tampoco llega en spam , ni nada....

no tuve otra que crearme una cuenta nueva.
Title: Re:No funciona bien los includes, decepcionada
Post by: SplinterGU on November 25, 2016, 08:48:51 PM
Quote from: alicesimu on November 25, 2016, 07:38:47 PM
Quote from: DCelso on November 25, 2016, 04:37:18 PM
Cierto, y también se sabía su clave.  :o

no puedo recuperar esa cuenta, aun que le diga que me envien la reactivacion de la contraseña por correo electronico simulatorone@hotmail.com

por que nunca llega dicho email, tampoco llega en spam , ni nada....

no tuve otra que crearme una cuenta nueva.

yo creo que si envias a panreyes o a josebita un mail desde esa cuenta (de mail) comentando tu problema, y ellos verifican que ese es tu mail de registro, estoy seguro que podran resetearte la contraseña.
Title: Re:No funciona bien los includes, decepcionada
Post by: La momia que fuma on November 25, 2016, 09:11:07 PM
Quote from: SplinterGU on November 25, 2016, 08:48:51 PM
Quote from: alicesimu on November 25, 2016, 07:38:47 PM
Quote from: DCelso on November 25, 2016, 04:37:18 PM
Cierto, y también se sabía su clave.  :o

no puedo recuperar esa cuenta, aun que le diga que me envien la reactivacion de la contraseña por correo electronico simulatorone@hotmail.com

por que nunca llega dicho email, tampoco llega en spam , ni nada....

no tuve otra que crearme una cuenta nueva.

yo creo que si envias a panreyes o a josebita un mail desde esa cuenta (de mail) comentando tu problema, y ellos verifican que ese es tu mail de registro, estoy seguro que podran resetearte la contraseña.


Sip, a mi me pasó lo mismo teniendo también la cuenta con un correo de hotmail. Me cambió Panreyes a mano el correo de la cuenta del foro por otro mío de gmail y problema resuelto. No es la primera vez que me pasa algo así con ese correo, hotmail cada vez me da mas problemas y tengo esa cuenta casi abandonada.
Title: Re:No funciona bien los includes, decepcionada
Post by: Futu-block on November 26, 2016, 05:33:45 PM
Yo también abandoné la cuenta de hotmail, a ver si la cierran de una vez