Fórum Ajuda Logica, usando IFs #258437
15/11/2004
0
Preciso executar uma fórmula com IFs, só que essas fórmulas serão digitadas pelo usuário e armazenadas num campo string ( varchar(500) ). Meu problema é executar essa fórmula, já que ela é um string. Alguém sabe como solucionar esse problema?
Exemplo de uma fórmula muito simples :
var Formula : String; Valor : Real; ... Formula := ´iif(REALIZADO<(OBJETIVO*0.8),0, REALIZADO*2)´; ... Real := Formula ; // Esse seria um jeito se Formula não fosse um string, já que a formula retorna um valor;
Eu preciso executar essa formula dessa maneira.
A função iif usada já existe, não se preocupem com ela.
Será que alguém poderia me ajuda ?
Airto
Curtir tópico
+ 0Posts
15/11/2004
Edilcimar
real := strtofloat(formula)
except
showmessage(´não foi possível efetuar o cálculo´);
end
Gostei + 0
15/11/2004
Airto
Gostei + 0
15/11/2004
Bruno Belchior
Gostei + 0
15/11/2004
Massuda
Esse componente é capaz de parsear uma string contendo uma expressão do tipo ´1+2*3/4´ e retornar o valor correspondente. Adicionalmente, o componente suporta expressões com variáveis e funções definidas pelo usuário (no seu exemplo, OBJETIVO e REALIZADO seriam variáveis e iif uma função do usuário).
Tanto as variáveis como as funções do usuário são tratadas, repectivamente, através dos eventos OnVariable e OnEvaluate.
Uma coisa que não tenho certeza é se ele suporta operadores relacionais (maior, menor, igual, etc).
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)