Página 1 de 1

EVENT no recibe parametro

Publicado: Mié Feb 11, 2009 1:34 pm
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

EVENT no recibe parametro

Publicado: Mié Feb 11, 2009 1:42 pm
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

EVENT no recibe parametro

Publicado: Mié Feb 11, 2009 3:03 pm
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

EVENT no recibe parametro

Publicado: Mié Feb 11, 2009 4:22 pm
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

EVENT no recibe parametro

Publicado: Mié Feb 11, 2009 4:26 pm
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

EVENT no recibe parametro

Publicado: Mié Feb 11, 2009 4:27 pm
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

EVENT no recibe parametro

Publicado: Mié Feb 11, 2009 4:39 pm
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

EVENT no recibe parametro

Publicado: Mié Feb 11, 2009 5:35 pm
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+.