COMPONENTES VCL
Delphi 7 a Delphi 13 Florence
![]() |
RDFormula Versão 2.0
Componente de resolução de Expressões Matemáticas |
| Avaliação de Expressões e Fórmulas Matemáticas. Permite criar e montrar fórmulas personalizadas em tempo de execução, oferecendo maior liberdade ao usuário final. Ideal para customização de Fórmulas para Cálculo de Impostos, Folha de Pagamento etc |
|
|
|
|
Introdução:
RDFormula Versão 2.0 foi TOTALMENTE reescrito utilizando um novo método RPN (HP) para resolução da expressão, ficando até 10x mais rápida que a versão 1.0.
Novidades:
Compatibilidade com Delphi XE-XE7
FUNÇÃO DIV, retorna o inteiro da divisão
FUNÇÃO INVERTE, inverte o valor da variavel ou resultado, o mesmo que (valor * -1)
FUNÇÃO EXECUTE agora retorna TRUE / FALSE caso tenho ocorrido algum erro.
Variavel LASTERROR mostra o último erro encontrado na execução da expressão.
Novo Método de resolução, em alguns casos com uso de variável do usuário chega a ficar até 10x mais rápido
Caracteristicas:
• Suporte ilimitado ao números de variáveis definidas pelo usuário• Validação da Expressão, retornando uma mensagem de erro.
• Operações básicas, expressões e funções trigonométricas.
| Operadores | Descrição | Exemplo: |
|---|---|---|
| + | Adição | 8 + 2 = 10 |
| - | Subtracao | 8 - 2 = 6 |
| * | Multiplicação | 8 * 2 = 16 |
| / | Divisão | 8 / 2 = 4 |
| ^ | Exponencial | 8^2 = 64 (Base deve ser Positiva) |
| () | Parenteses | (8+2) / 2 = 5 é diferente 8+2 / 2 = 9 |
| MOD | Resto da divisão | 10 MOD 3 = 1 (somente inteiros) |
| DIV | Inteiro da divisão | 10 DIV 3 = 3 (somente inteiros) |
| ABS | Valor Absoluto | ABS(10 -12) = 2 ABS(10 - 8) = 2 |
| ROUND | Arredonda | Round(11/3) = 4 senão 3.6666 |
| TRUNC | Trunca valor | Trunc(11 /3) = 3 |
| SIN | Função Seno | |
| COS | Função Coseno | |
| ATAN | Função Tangente | |
| EXP | Exponencial | Exp(2) (inverso da LN) |
| LN | Logaritimo Nataral | Log(10) |
| SQRT | Raiz Quadrada | SQRT(16) = 4 |
| SQR | Quadrado | SQR(2) = 4 (o mesmo que x*x) |
| INVERTE | Inverte valor | INVERTE(X) = -X (o mesmo que x * -1) |
Calculando uma EXPRESSÃO:
Para calcular o valor de uma expressão, coloque-a na propriedade "EXPRESSAO" e chame a função EXECUTE.
Exemplo:
RDFormula1.Expressao := '(18 * 8) / 2';
RDFormula1.Execute;
if RDFormula1.Falhou then // é TRUE se houve falha na execução...
Showmessage(RDFormula1.LastError)
else
Showmessage('O resultado é ' + FloatToStrF(RDFormula1.Resultado, ffGeneral, 18, 2);
|
Variáveis definidas pelo Usuário:
Se for utilizar variáveis definidas pelo usuário, então você deve alimentar os valores correspondentes no evento "OnVariavel"
2) Todas as variaveis possíveis de serem utilizadas na expressão, devem estar relacionadas aqui e com seus devidos valores fixos ou variáveis, campo de arquivo etc.
3) O VALUE representa o valor que deve ser válido
4) VARNAME é o nome da variavel encontrada na expressão. Para evitar erros use UPPERCASE ou LOWERCASE para converter o VARNAME
5) FOUND é uma variavel do tipo boolean, você deve validar se o valor de VARNAME foi encontrado (TRUE) ou não (FALSE)
Exemplo:
Procedure TForm1.RDFormula1Variavel(Sender: TObject; VarName : String;
var Value : Extended; var Found : Boolean);
begin
Found := True;
// Transforme tudo pra Maiusculo para evitar case sensitive...
VarName := Uppercase(VarName);
// Valores Fixos...
if (VarName = 'SALARIO') then Value := 181 else
if (VarName = 'DIAMES') then Value := 30 else
if (VarName = 'DIASEMANA') then Value := 7 else
if (VarName = 'BANANA') then Value := 1.85 else
if (VarName = 'LARANJA') then Value := 2.50 else
if (VarName = 'UVA') then Value := 5.00 else
if (VarName = 'DIAS') then Value := STRTOINT(DIAS.TEXT) else
if (VarName = 'QUANTIDADE') then Value := STRTOINT(QUANTIDADE.TEXT) else
Found := False; // Se nao achou o valor mode FALSE para FOUND
end;
|
Whatsapp Deltress