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.

¿Es incorrecto comparar dos objetos entre si?

Foro de Xailer profesional en español
Responder
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

¿Es incorrecto comparar dos objetos entre si?

Mensaje 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!!
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

¿Es incorrecto comparar dos objetos entre si?

Mensaje 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!!
>
--
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

¿Es incorrecto comparar dos objetos entre si?

Mensaje 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!!
>
--
Rene Flores
Mensajes: 620
Registrado: Jue Mar 23, 2006 2:39 am

¿Es incorrecto comparar dos objetos entre si?

Mensaje 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
xAvi
Mensajes: 108
Registrado: Mar Abr 08, 2008 6:12 pm

¿Es incorrecto comparar dos objetos entre si?

Mensaje 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
Responder