Error con puntero

Started by JoseBennu, December 29, 2010, 12:26:15 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

JoseBennu

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!

SplinterGU

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.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

JoseBennu

#2
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

SplinterGU

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
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

JoseBennu

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

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2