Clarion - EVALUATE

 
Vista:

EVALUATE

Publicado por MARIANO (45 intervenciones) el 25/02/2007 16:58:28
Hola al foro... necesito que me ayuden con el comando EVALUATE, me fije en la ayuda pero no tuve muchos resultados positivos, básicamente quiero saber para que se usa ... y como ? yo quiero evaluar una expresión de error .
Gracias !
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:EVALUATE

Publicado por Enrique Pérez Cázares (63 intervenciones) el 27/02/2007 20:27:16
Pregunta MUY interesante.

La función Evaluate en mi opinión es una de las funciones mas poderosas y menos usadas de Clarión.

Esta función permite EVALUAR cualquier expresión y devuelve el resultado de esa evaluación en un String o sea en una cadena de caracteres.

En caso de que la expresión no pueda ser evaluada se generará un mensaje de error en el runtime de Clarion.

Supongamos que en tu código colocas la siguiente instrucción :

A# = Evaluate('5 = 2 + algo')

Suponiendo que la expresión "algo" no está definida en el programa, esta expresión, es una expresión que por lógica no puede ser evaluada. En este caso la función Error() te regresará un mensaje de error.

Ahora bien en el siguiente ejemplo :

A# = Evaluate('1 = 2')

No te regresará mensaje de error ya que el programa aquí podrá elavuar la expresión de comparación si 1 es igual a 2 y como resultado de esta evaluación A# obtedrá un valor "0" que significa "false" o sea que 1 no es igual 2.

Las expresiones puden ser de cualquie tipo, siempre y cuando cumpla con las reglas de programación de Clarion y su evaluación regrese algun valor.

Un ejemplo prático.

Supongamos que se tiene un Browse y que se desee que el usuario cambie los criterios por los cuales se modifique el filtro a aplicar en este Browse.

En alguna parte de la ventana el usuario debera poder capturar la expresión del filtro para luego "Evaluar" si la expresión es correcta y así poder aplicar dicho criterio. Esto quedaría más o menos asi.

FILTRO String(80)
.
.
ENTRY(@S80),AT(20,0,20,20),USE(FILTRO)
.
.
A# = Evaluate(FILTRO)
If Error()
Message('Expresión del filtro incorrecta')
Clear(FILTRO)
Select(?Filtro)
Else
?Browse{Prop:Filter} = FILTRO
End

Otro ejemplo sencilo será por ejemplo el evaluar una expresión de un cálculo aritemético:

Operacion = '(3*2)+5'
A# = Evaluate(Operacion)
Message(A#)

Lo cual nos desplegará el valor 11

Otro puede ser evaluar una expresión lógica:

Message(Evaluate('5<1'))

Lo cual nos desplegará un valor "0" que quiere decir falso.

En conclusión la versatilidad de esta función es tan amplia como el uso que se le desee dar.

Espero sea útil esta explicación.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:EVALUATE

Publicado por MARIANO (1 intervención) el 27/02/2007 22:52:57
Muchas Gracias Enrique por tu tiempo y dedicación que aplicaste a la respuesta... en realidad lo que me esta pasando es que tengo una ventana con un browse al cual le agregue el template BrowseQBEList - QBE Filter – Advanced
de Clarion 6.1 t cuando por ejemplo se hace doble clic sobre el browse del template y/o se selecciona una sola columna y luego se presiona el botón Apply me arroja el siguiente error seguido de otros similares "Error: (Invalid expression for EVALUATE at pos 2 (1010)) al intentar abrir la vista (VIEW) actual. Filtros y Rangos seran ignorados." con un boton OK que si se presiona automáticamente se cierra la ventana lo poco que pude hacer todavía es ponerlo como comentario (!) en el archivo ABERROR.TRN .... entonces mi idea era tratar de capturar ese error pensando con la funcion evaluate y tratar de hacer algun proceso para que por lo menos no me tire ese error y que tampoco me cierre la ventana... bueno espero que haya sido claro y si tenes alguna sugerencia te estaré muy agradecido... gracias por responder de nuevo. Saludos.
Mariano Bs. As.

( Intentare aplicar tu explicación)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar