Page 2 of 2

PostPosted: Thu Jan 17, 2008 3:46 pm
by FiveWiDi
Antonio Linares wrote:Rafa, tu código y el mio hacen lo mismo. La segunda parte de un .AND. no se ejecuta si no se cumple la primera parte.


Antonio,

lo que dices es válido si se usa esta opción del compilador?

"# /Z Esta opción elimina la optimización debida a la evaluación abreviada
# para los operadores lógicos .AND. y .OR. Su objetivo es ayudar a aislar
# un código que depende del comportamiento de versiones anteriores de
# CA-Clipper."

Saludos
Carlos G.

PostPosted: Thu Jan 17, 2008 8:28 pm
by Antonio Linares
Carlos,

No es válido si usas esa opción.

Mejor no usarla, salvo que necesites depurar las dos partes.

PostPosted: Thu Jan 17, 2008 9:06 pm
by FiveWiDi
Antonio Linares wrote:Carlos,

No es válido si usas esa opción.

Mejor no usarla, salvo que necesites depurar las dos partes.


Gracias, de hecho no la uso.
Necesitaba que alguien con conocimiento me lo confirmara.

Saludos
Carlos G.

PostPosted: Fri Jan 18, 2008 2:16 pm
by miragerr
Antonio

Resolvi o MEU problema da seguinte forma:

Code: Select all  Expand view
   if ::bKeyDown != nil .AND. ::ClassName() == "TGET"
      if ValType( uVal := Eval( ::bKeyDown, nKey, nFlags, Self ) ) == "N" .and. ;
         uVal == 0
         return 0
      endif
   endif


Como vc pode ver, desta forma tenho outras classes que herdam a TGET e executam 2x a mesma função, pois na classe WINDOWS.PRG


Code: Select all  Expand view
   if Upper( ::ClassName() ) != "TGET" .and. ::bKeyDown != nil
      return Eval( ::bKeyDown, nKey, nFlags )
   endif


axo que esta pequena modificação, podera resolver muitos problemas de outros usuarios

Espero ter ajudado

PostPosted: Wed Jan 23, 2008 9:22 am
by Antonio Linares
gracias!