In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

EVENT no recibe parametro

Foro público de Xailer en español
Responder
rafa
Mensajes: 119
Registrado: Vie Ene 16, 2009 9:59 am

EVENT no recibe parametro

Mensaje por rafa »

Tengo una definición como esta
EVENT OnError( oSender, nError )
El method que lance ese EVENT esta declarado como ;
METHOD DoHandleError CLASS xBaseSocket
Local nSocketError
nSocketError := WSAGetLastError()
// MsgInfo( toString( nSocketError ) ) // Aqui si que se muestra el
numero de error
if !empty( ::OnError )
::OnError( Self, nSocketError )
endif
return nil
Pues en mi formulario , tengo esto;
METHOD FormCreate( oSender ) CLASS TForm1
::o := TBaseSocket():Create()
::o:OnCreateHandle := "CreateHandle"
::o:OnDestroyHandle := "destruirHandle"
::o:OnError := "OnError"
RETURN Nil
METHOD OnError( oSender, nError) CLASS TForm1
Msginfo( ToString( nError ) ) // AQUI ES NIL
RETURN NIL
¿ Donde estoy cometiendo el fallo ?
Saludos
Rafa Carmona
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

EVENT no recibe parametro

Mensaje por jfgimenez »

Rafa,
> if !empty( ::OnError )
Este es el problema. Los eventos sólo se pueden asignar y ejecutar, NO se
pueden leer. Eso significa que en la línea anterior en realidad lo estás
ejecutando, y como no le pasas el parámetro, en el formulario lo recibes
como Nil.
> ::OnError( Self, nSocketError )
En esta otra línea, NO pases Self nunca, ya que Xailer SIEMPRE pasa oSender
como primer parámetro al lanzar el evento (en este caso coincide con Self,
pero no siempre tiene que ser así). Tal y como lo tienes, el evento
recibiría 3 parámetros, y no 2 como esperas, es decir, recibes oSender, Self
y nError, en vez de oSender y nError.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

EVENT no recibe parametro

Mensaje por jose.luis »

Hola Rafa,
> if !empty( ::OnError )
IF !::EventAssigned( "OnError")
> ::OnError( Self, nSocketError )
Self se pasa siempre. Es el propio Xailer el que lo pone como primer
parámetro en la llamada al método o codeblock.
Saludos,
Josñe lUis Capel
rafa
Mensajes: 119
Registrado: Vie Ene 16, 2009 9:59 am

EVENT no recibe parametro

Mensaje por rafa »

José Luis Capel escribió:
> Hola Rafa,
>
>> if !empty( ::OnError )
>
> IF !::EventAssigned( "OnError")
>
AH!!! Ahi esta!
En Delphi se usa el assigned( FOnError ) por poner un ejemplo.
Ahora si...
Dentro de poco subo todas las modificaciones y con un boceto inicial
ya con el soporte de sockets en estado muy muy ALPHA..
Saludos
Rafa Carmona
rafa
Mensajes: 119
Registrado: Vie Ene 16, 2009 9:59 am

EVENT no recibe parametro

Mensaje por rafa »

José Luis Capel - Aicom escribió:
> Rafa,
>
> Y el tema de sockets... ¿como lo estás planteando?
En principio quiero hacerlo mas o menos igual a la jerarquia de clases
de Delphi, de esta manera, puedo estar aprendiendo 2 sistemas a la vez.
He estado mirando la TIP de xHarbour, y la verdad, esta bien para usarla
con las clases de xHarbour, pero si no, tienes que mirar con lupa que es
lo que esta haciendo , por ello, voy a seguir haciendo los wrappers en C.
¿ Por algo en especial ?
Saludos
Rafa Carmona
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

EVENT no recibe parametro

Mensaje por jose.luis »

Rafa,
Y el tema de sockets... ¿como lo estás planteando?
SAludos,
josé lUis Capel
"rafa" <thefull_quita@t-gtk.org> escribió en el mensaje
news:4992ed1f$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> José Luis Capel escribió:
>> Hola Rafa,
>>
>>> if !empty( ::OnError )
>>
>> IF !::EventAssigned( "OnError")
>>
> AH!!! Ahi esta!
> En Delphi se usa el assigned( FOnError ) por poner un ejemplo.
>
> Ahora si...
>
> Dentro de poco subo todas las modificaciones y con un boceto inicial
> ya con el soporte de sockets en estado muy muy ALPHA..
>
> Saludos
> Rafa Carmona
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

EVENT no recibe parametro

Mensaje por jose.luis »

Rafa,
>> Y el tema de sockets... ¿como lo estás planteando?
> En principio quiero hacerlo mas o menos igual a la jerarquia de clases
> de Delphi, de esta manera, puedo estar aprendiendo 2 sistemas a la vez.
>
> He estado mirando la TIP de xHarbour, y la verdad, esta bien para usarla
> con las clases de xHarbour, pero si no, tienes que mirar con lupa que es
> lo que esta haciendo , por ello, voy a seguir haciendo los wrappers en C.
>
> ¿ Por algo en especial ?
>
Pues si.... quiero meter mano a la comunicación socket entre PDA/PC via
activesync... en Harbour.
Osea... que aquí me tienes para lo que haga falta!
Saludos,
José lUis Capel
jasm.quitaesto
Mensajes: 420
Registrado: Sab Ago 16, 2008 9:06 pm

EVENT no recibe parametro

Mensaje por jasm.quitaesto »

José Luis
>
> Pues si.... quiero meter mano a la comunicación socket entre PDA/PC via
> activesync... en Harbour.
>
Lo probe usando xHb desde consola y los resultados fueron bastante
alentadores. Tanto desde ActiveSync como desde WiFi.
Saludos,
Alf+.
Responder