Página 1 de 1

¿Es incorrecto comparar dos objetos entre si?

Publicado: Mié Nov 07, 2007 9:09 pm
por jose.luis
Hola,
Este trozo de código:
METHOD DBEditBtn2Exit( oSender, oNextCtl ) CLASS tfrmArticuloV
IF oNextCtl != ::oGeneralAFCO //es un control tdbEdit.
// Vamos a la siguientes pestaña
::oFolderPageTecnico:Select()
ENDIF
RETURN Nil
Y me da este error:
TFRMARTICULOV:DBEDITBTN2EXIT(962)
Error BASE/1072 Error de argumento: <>
Argumentos: ( [ 1] = Tipo: O Valor: [ 2] = Tipo: O Valor: )
¿Por qué?
--
Saludos y gracias,
José Luis Capel
www.capelblog.com vuelve a estar online!!

¿Es incorrecto comparar dos objetos entre si?

Publicado: Mié Nov 07, 2007 9:12 pm
por Xevi
José Luis,
Si mal no recuerdo, las comparaciones entre objetos debe hacerse utilizando == (exactamente igual)
Así­ pues
> METHOD DBEditBtn2Exit( oSender, oNextCtl ) CLASS tfrmArticuloV
>
> IF !(oNextCtl == ::oGeneralAFCO) //es un control tdbEdit.
> // Vamos a la siguientes pestaña
> ::oFolderPageTecnico:Select()
> ENDIF
>
> RETURN Nil
Un Saludo,
Xevi.
"José Luis Capel" <jose.luis@capelsoft.com> escribió en el mensaje de noticias news:47321ba4$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Hola,
>
> Este trozo de código:
>
> METHOD DBEditBtn2Exit( oSender, oNextCtl ) CLASS tfrmArticuloV
>
> IF oNextCtl != ::oGeneralAFCO //es un control tdbEdit.
> // Vamos a la siguientes pestaña
> ::oFolderPageTecnico:Select()
> ENDIF
>
> RETURN Nil
>
> Y me da este error:
>
> TFRMARTICULOV:DBEDITBTN2EXIT(962)
> Error BASE/1072 Error de argumento: <>
> Argumentos: ( [ 1] = Tipo: O Valor: [ 2] = Tipo: O Valor: )
>
> ¿Por qué?
>
> --
> Saludos y gracias,
> José Luis Capel
> www.capelblog.com vuelve a estar online!!
>
--

¿Es incorrecto comparar dos objetos entre si?

Publicado: Mié Nov 07, 2007 9:20 pm
por jose.luis
Xevi,
Gracias!!
Era eso.
No conocí­a yo esa peculiaridad de las comparaciones entre objetos.
¿Alguien puede explicar por que se tiene que hacer de esa manera?
--
Saludos,
José Luis Capel
www.capelblog.com vuelve a estar online!!
"Xevi" <xevicomas@gmail.com> escribió en el mensaje de noticias news:[email=47321c4c@ozsrv2.ozlan.local...]47321c4c@ozsrv2.ozlan.local...[/email]
José Luis,
Si mal no recuerdo, las comparaciones entre objetos debe hacerse utilizando == (exactamente igual)
Así­ pues
> METHOD DBEditBtn2Exit( oSender, oNextCtl ) CLASS tfrmArticuloV
>
> IF !(oNextCtl == ::oGeneralAFCO) //es un control tdbEdit.
> // Vamos a la siguientes pestaña
> ::oFolderPageTecnico:Select()
> ENDIF
>
> RETURN Nil
Un Saludo,
Xevi.
"José Luis Capel" <jose.luis@capelsoft.com> escribió en el mensaje de noticias news:47321ba4$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Hola,
>
> Este trozo de código:
>
> METHOD DBEditBtn2Exit( oSender, oNextCtl ) CLASS tfrmArticuloV
>
> IF oNextCtl != ::oGeneralAFCO //es un control tdbEdit.
> // Vamos a la siguientes pestaña
> ::oFolderPageTecnico:Select()
> ENDIF
>
> RETURN Nil
>
> Y me da este error:
>
> TFRMARTICULOV:DBEDITBTN2EXIT(962)
> Error BASE/1072 Error de argumento: <>
> Argumentos: ( [ 1] = Tipo: O Valor: [ 2] = Tipo: O Valor: )
>
> ¿Por qué?
>
> --
> Saludos y gracias,
> José Luis Capel
> www.capelblog.com vuelve a estar online!!
>
--

¿Es incorrecto comparar dos objetos entre si?

Publicado: Jue Nov 08, 2007 12:22 am
por Rene Flores
José Luis Capel escribió:
> No conocí­a yo esa peculiaridad de las comparaciones entre objetos.
>
> ¿Alguien puede explicar por que se tiene que hacer de esa manera?
Supongo que porque internamente un objeto es en realidad un ARRAY, luego
entonces "medio" comparar arrays entre si puede no resultar tan
efectivo como comparar EXACTAMENTE 2 arrays.
Saludos
Rene Flores
http://www.ciber-tec.com

¿Es incorrecto comparar dos objetos entre si?

Publicado: Vie Nov 09, 2007 1:41 pm
por xAvi
José Luis,
En mi humilde opinión no. No es incorrecto comparar dos objetos entre si para determinar si es la misma "referencia", es una
ayuda del lenguaje a la programación y _ayudar a la programación_ es la finalidad principal de un lenguaje de alto nivel.
Por *coherencia* "que es lo más importante de un lenguaje", si disponemos del operador "==" deberí­amos disponer del operador "!=".
José Luis Capel escribió:
> ¿Alguien puede explicar por que se tiene que hacer de esa manera?
>
Básicamente porque no se ha implementado la resolución de operadores de clase "por defecto, internamente" para este fin, se
utiliza la particularidad que una clase es una Array .-
Local lRes := HB_INLINE( Application ){
PHB_ITEM pVar = hb_param( 1, HB_IT_ANY );
hb_retl( HB_IS_ARRAY( pVar ) );
}
LogDebug( iif( lRes, "Es Array", "No es Array") )
Y en Clipper, que *fue* un _proyecto privativo_ y todos sabemos como acabo para la comunidad de programadores, no se implemento
para Arrays: las clases tal y como las conocemos hoy en dí­a en harbour, no existí­an.
Hoy en dí­a existen muchos proyectos privativos para la programación en xBase, hasta vuelve a salir el mí­tico dBase, pero la baza
principal de Harbour siendo mejor o peor, con más o menos cosas, es que sea un proyecto abierto no privativo aunque algunos se
empeñen en cambiarlo: a fecha de hoy la lista de desarrollo de xHarbour sigue cerrada demostrando que "la estupidez humana es
infinita". Creerme, merece la pena luchar para que siga siendo así­ y estoy deseando que esta GUI-IDE se compile y trabaje con
*Harbour*.
Un saludo
Xavi