|
RDFormula 1.0
Componente de resolução de Expressões
Matemáticas
Agradecimento:
- A todos programadores e desenvolvedores que
direta ou indiretamente contribuiram para a criação e aperfeiçoamento
deste componente.
Introdução:
- Este componente é um apanhado de diversas rotinas para tratamento de
Strings, Macro Substituição, Funções e Expressões Matemáticas em Delphi,
utilizamos tambêm algumas rotinas existentes em outros componentes.
- Alguns conceitos vieram do bom e velho COBOL, e foram adaptados para o Pascal,
(diga-se de passagem com muito mais recursos).
Quer saber mais sobre Formula Matemáticas em Delphi ??
Visite:
http://homepages.borland.com/efg2lab/Library/Delphi/MathFunctions
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 |
| - |
Subtração |
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) |
| 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) |
CÁLCULANDO UMA EXPRESSÃO:
Para calcular o valor de uma
expressão, coloque-a na propriedade expressão 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('Erro')
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
Exemplo:
Procedure
TForm1.RDFormula1Variavel(Sender: TObject; VarName: String;
var Value: Extended; var Found: Boolean);
begin
// 1) Este evento procura pelo valor de uma VARIAVEL encontrada na fórmula
// 2) Todas as variaveis possiveis de serem utilizadas na expressão, devem estar
// relacionadas aqui e com seus devidos valores fixos ou variaveis,
// 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, voce deve validar se o valor de VARNAME
// foi encontrado (TRUE) e não (FALSE)
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
// Valores lidos do campo EDIT
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; |
| *
Veja projeto exemplo completo |
Voltar
|