una consulta sobre una forma de programar que vi que no la tengo clara por que se usa en vfp

761 views
Skip to first unread message

Marcelo Barberis

unread,
Oct 11, 2011, 1:58:21 AM10/11/11
to publicesvfoxpro
Amigos
Tengo una duda sobre algo, porque algunos programadores usan el doble igual ( == ) alguien me puede decir por usan esta forma?

por ejemplo me enviarion un codigo de un programa y he visto que utilizan esta forma

IF sw == .T.
    RETURN
 ENDIF

ALLTRIM(codigo) == ALLTRIM(THISFORM.Codigo.Value)

y asi tengo en varios lugares esta forma

Marcelo Barberis

Miguel

unread,
Oct 11, 2011, 3:07:10 AM10/11/11
to Comunidad de Visual Foxpro en Español
Operadores relacionales
Vea también

Los operadores relacionales funcionan con todos los tipos de datos y
devuelven un valor Logical. En la siguiente tabla se muestran los
operadores relacionales.

Operadores relacionales

Operador Acción Código
< Menor que ? 23 < 54

> Mayor que ? 1 > 2

= Igual que ? cVar1 = cVar

<>, #, != Distinto de ? .T. <> .F.

<= Menor o igual que ? {^1998/02/16} <= {^1998/02/16}

>= Mayor o igual que ? 32 >= nSuEdad

== Comparación de cadenas de caracteres ? status == "Abrir"



Se puede usar el operador == para comparar cadenas de caracteres de
forma exacta. Al comparar dos expresiones de caracteres mediante el
operador ==, las expresiones a ambos lados de dicho operador se
consideran iguales si contienen exactamente los mismos caracteres,
incluidos los espacios en blanco. La configuración de SET EXACT se
pasa por alto al comparar cadenas de caracteres con el operador ==.
Vea SET EXACT si desea obtener más información sobre el uso del
operador == para comparar cadenas de caracteres.

También puede usar el operador de igual que (=) en Visual FoxPro 6.0
para determinar si dos referencias a objetos hacen referencia al mismo
objeto. En el siguiente ejemplo se muestra un uso sencillo:

CLEAR ALL
X = CREATEOBJECT('Form')
Y = CREATEOBJECT('Form')
? X = Y && Muestra falso (.F.)
Z = X
? X = Z && Muestra verdadero (.T.)

Walter R. Ojeda Valiente

unread,
Oct 11, 2011, 7:17:06 AM10/11/11
to publice...@googlegroups.com
Como te explicó Miguel, si usas == le estás diciendo al VFP que ambos operandos deben ser EXACTAMENTE IGUALES, siempre.

En cambio, si usas = eso dependerá de como hayas establecido a SET EXACT. Por ejemplo:

SET EXACT OFF
Nombre1 = "Hola"
Nombre2 = "Hola muchachos"
? Nombre2 = Nombre1

Te devolverá .T., que son iguales, lo cual posiblemente sea un resultado erróneo. Para asegurarte que te devuelva .F. deberías poner SET EXACT ON o hacer la comparación con el doble signo igual.

SET EXACT ON
? Nombre2 = Nombre1     && devuelve .F.

? Nombre2 == Nombre1     && devuelve .F., siempre, sin importar si SET EXACT está en ON o en OFF.

Saludos.

Walter.




Date: Tue, 11 Oct 2011 07:58:21 +0200
Subject: [vfp] una consulta sobre una forma de programar que vi que no la tengo clara por que se usa en vfp
From: alexm...@gmail.com
To: publice...@googlegroups.com

Douglas Sánchez Guillén

unread,
Oct 11, 2011, 11:42:00 AM10/11/11
to publice...@googlegroups.com
Hola significa exactamente igual, un ejemplo cloro es esto:
 
campo = "Douglas "   &&&& campo ya almacenado
entrada= "DOuglas"  &&&& objeto eje textbox

If ALLTRIM(entrada) == Alltrim(campo)  &&&& proba quitando el == y dejando solo = te va dar la primera condicion.
    ?"Si es igual"
Else
    ?"no es igual"  &&& va decir que no es igual
Endif


ahora con respecto al valor ahi lo veo como un error, igual que el de arriba ya que lo resolveria haciendo que los usuarios solo en mayuscula escriban, ejemplo  
If upper(ALLTRIM(entrada)) = upper(Alltrim(campo)) si van hacer iguales.

ahora te aclaro esto:
lo correcto es que cuando creamos una variable ya sea local o publica lo hagamos de la siguiente: 

si fuera local:

LOCAL sw as Boolean

si fuera publica , o sea que va iniciar tanto la de arriba com la de abajo en .f. siempre.

PUBLIC sw as Boolean

ahora si en algun punto de mi programa yo le cambio el valor a SW a .T.,   vasta con que haga esto. 

IF SW
   RETURN
ENDIF

En ves de esto.
IF sw == .T.
    RETURN
 ENDIF

Ahora que apriendo Python y PHP veo que si en esos casos se utiliza el igual de esta forma  ==, y el = para dar valor a una variable
no para comparacion.

Saludes

Espero te sirva la pequeña aclaracion.







--
Ing. Douglas Sánchez Guillén
      Consultor Informatico
Movistar: 505 8759 - 5342

Walter R. Ojeda Valiente

unread,
Oct 11, 2011, 2:17:58 PM10/11/11
to publice...@googlegroups.com
Hola Douglas

El == se usa en C y en todos sus lenguajes derivados como operador de comparación. El = como operador de asignación.

En algunos lenguajes (Basic, VFP, etc.) se usa el símbolo = para ambas tareas, asignación y comparación. En el lenguaje C y sus derivados se usan símbolos diferentes.

Saludos.

Walter.




Date: Tue, 11 Oct 2011 09:42:00 -0600
Subject: Re: [vfp] una consulta sobre una forma de programar que vi que no la tengo clara por que se usa en vfp
From: dougl...@gmail.com
To: publice...@googlegroups.com

Mario Alfredo

unread,
Oct 13, 2011, 4:36:04 PM10/13/11
to Comunidad de Visual Foxpro en Español
hoy aprndi algo de y lenguaje (decir bien las palabras)
asignacion
comparacion

On Oct 11, 12:17 pm, "Walter R. Ojeda Valiente" <w...@hotmail.com>
wrote:
> Hola Douglas
>
> El == se usa en C y en todos sus lenguajes derivados como operador de comparación. El = como operador de asignación.
>
> En algunos lenguajes (Basic, VFP, etc.) se usa el símbolo = para ambas tareas, asignación y comparación. En el lenguaje C y sus derivados se usan símbolos diferentes.
>
> Saludos.
>
> Walter.
>
> Date: Tue, 11 Oct 2011 09:42:00 -0600
> Subject: Re: [vfp] una consulta sobre una forma de programar que vi que no la tengo clara por que se usa en vfp
> From: douglas...@gmail.comTo:publice...@googlegroups.com
>       Consultor InformaticoMovistar: 505 8759 - 5342
> Claro: 505 88495476

Carlos Miguel FARIAS

unread,
Oct 14, 2011, 8:17:38 AM10/14/11
to publice...@googlegroups.com
Algo que deben conocer de vfp (y de xbase) es la asignacion multiple, que es muy practica para asignacion multiple...

STORE {valor} TO variable1, varieble2, ...m variablen

tengo entendido que es mas rapido que hacerlo por separado
Reply all
Reply to author
Forward
0 new messages