Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: JoseBennu on December 29, 2010, 12:26:15 PM

Title: Error con puntero
Post by: JoseBennu on December 29, 2010, 12:26:15 PM
Estoy tratando de asignar un puntero como variable pública de un proceso. Éste es el código:

DECLARE PROCESS proceso()
PUBLIC
proceso POINTER puntero;
End
End

PROCESS Main()
Private
Int IDproceso;
End
Begin
IDproceso=proceso();
write(0,100,100,0,*IDproceso.puntero);
Repeat
frame;
Until(key(_esc))
End

PROCESS proceso()
Private
Int a=10;
End
Begin
puntero=Alloc(sizeof(INT));
puntero=&a;
End


Cuando lo ejecuto, me devuelve el error unkown identifier. ¿Alguien sabe qué hago mal? ¡Gracias!
Title: Re: Error con puntero
Post by: SplinterGU on December 29, 2010, 12:51:41 PM
en que linea?
por otro lado, cuando el proceso muere todas las variables propias de el, tambien lo hacen, asi que ese codigo no te funcionara, con &a, si con el alloc.
Title: Re: Error con puntero
Post by: JoseBennu on December 29, 2010, 01:08:05 PM
El error sale en la línea write. He modificado el código teniendo en cuenta lo que me has dicho, pero el error sigue siendo el mismo (también probé a definir la variable a como global, con el mismo resultado):

DECLARE PROCESS proceso()
PUBLIC
proceso POINTER puntero;
End
End

PROCESS Main()
Private
Int IDproceso;
End
Begin
IDproceso=proceso();
write(0,100,100,0,*IDproceso.puntero);
Repeat
frame;
Until(key(_esc))
End

PROCESS proceso()
Private
Int a=10;
End
Begin
puntero=Alloc(sizeof(INT));
puntero=&a;
loop
frame;
End
End
Title: Re: Error con puntero
Post by: SplinterGU on December 29, 2010, 01:17:42 PM
copia el mensaje exacto, y pon el archivo .import que estas usando.

puede que te falte algun modulo incluir, tambien puede que el error sea que me parece que no se puede definir un puntero al mismo proceso, las variables de tipo <proceso> solo sirven para referencias al proceso, no tienen que ser pointer.

para acceder a puntero, IDProceso esta mal definida, debe ser

Private
   proceso IDproceso;
End

pero ahi ya tenemos mal definida proceso, deberia ser

DECLARE PROCESS proceso()
   PUBLIC
      int POINTER puntero;
   End
End
Title: Re: Error con puntero
Post by: JoseBennu on December 29, 2010, 01:45:10 PM
Vale, todo arreglado :) Adjunto el código correcto:

DECLARE PROCESS proceso()
PUBLIC
Int POINTER puntero;
End
End

PROCESS Main()
Private
proceso IDproceso;
End
Begin
IDproceso=proceso();
write(0,100,100,0,*(IDproceso.puntero));
//Muestra en pantalla el número 69
Repeat
frame;
Until(key(_esc))
End

PROCESS proceso()
Private
int a=69;
End
Begin

puntero=Alloc(sizeof(STRING));
puntero=&a;
loop
frame;
End
End
Title: Re: Error con puntero
Post by: SplinterGU on December 29, 2010, 01:46:36 PM
me alegro... ;)