PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Comparación dinámica
Comparación dinámica
Débuté par Miguel, 31 aoû. 2015 11:23 - 2 réponses
Posté le 31 août 2015 - 11:23
¿Es posible realizar una comparación entre dos strings de forma dinámica? Es decir, tengo en un combobox los distintos operadores de comparación entre strings y entro otros dos campos los dos strings a comparar. En vez de tener que escribir un SWITCH CASE por cada uno de los distintos operadores de comparación del combo se podría hacer en una única línea algo así:

IF EDT_Campo1 COMBO_Operador EDT_Campo2 = True THEN

No sé si con la función EvaluateExpression o con qué se podría hacer si se pudiera, esto ahorraría bastantes líneas de código
El combo_Operador contiene los siguientes valores: [~~], [~~, ~~], etc...

¿Alguna sugerencia o ayuda?

Gracias
Posté le 05 septembre 2015 - 16:05
Hola. Con Compile puedes hacerlo, pero no creo que con el escribas mucho menos codigo.

Rubén Sánchez Peña
Posté le 09 septembre 2015 - 17:56
Gracias Rubén. Ya lo tengo solucionado. Lo publico por si a alguien le sirve:

1) Código de inicialización del COMBO con los operadores de comparación (La propiedad "Returns the value specified by gLink" debe estar marcado)
ListDeleteAll(COMBO_operators)
ListAdd(COMBO_operators, "Igual" + gLink("="))
ListAdd(COMBO_operators, "Empieza por" + gLink("[="))
ListAdd(COMBO_operators, "Termina por" + gLink("=]"))
ListAdd(COMBO_operators, "Es distinto" + gLink("<>"))
ListAdd(COMBO_operators, "Contiene" + gLink("[=]"))

//ListaAdd.. resto de operadores de comparación


2) Código de comparación:
sCode is string

sCode += Charact(34) // Comillas
sCode += EDT_String_1
sCode += Charact(34) // Comillas
sCode += COMBO_operators..StoredValue
sCode += Charact(34) // Comillas
sCode += EDT_String_2
sCode += Charact(34) // Comillas

Trace(sCode) // Para control

Info("El resultado es " + (EvaluateExpression(sCode) ? " true" ELSE "false") )