http://www.swissdelphicenter.ch/en/showcode.php?id=470

 

Sds.

 

De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em
nome de harleydiaskoehler
Enviada em: terça-feira, 29 de dezembro de 2009 06:44
Para: delphi-br@yahoogrupos.com.br
Assunto: [delphi-br] Re: Conversão de expressão

  

Humberto,

O código a principio funciona, mas não obedece as regras matemáticas numa
equação. por exemplo:

"20 + (30 * 2)"
o resultado deveria ser 80, no seu código ele me traz o valor de 100, ou
seja soma para depois multiplicar. Consegue me ajudar nisso ?

grato

--- Em delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
, humberto sales de oliveira <humberto_...@...> escreveu
>
> coloque um edite com sua operacao, em um button insira o seguinte codigo:
> 
> var
> operacao : array[0..10] of double;
> operador : array[0..10] of char;
> x,z,z1 : integer;
> vr,s : string;
> begin
> for x := 0 to 10 do
> begin
> operacao[x] := 0;
> operador[x] := #0;
> end;
> vr := '';
> s := edit1.text;
> if copy(s,length(s),1) <> ' ' then
> s := s + ' ';
> z := 0;
> z1 := 0;
> for x := 1 to length(s) do
> begin
> case s[x] of
> '(' : continue;
> ')',' ' : begin
> if (vr <> '') then
> begin
> operacao[z] := strtofloat(vr);
> inc(z,1);
> end;
> vr := '';
> end;
> '0'..'9' : vr := vr + s[x];
> '+','-','*','/' : begin
> operador[z1] := s[x];
> inc(z1);
> end;
> end;
> 
> end;
> for x := 0 to 10 do
> begin
> case operador[x] of
> '+' : operacao[0] := operacao[0] + operacao[x+1];
> '-' : operacao[0] := operacao[0] - operacao[x+1];
> '/' : operacao[0] := operacao[0] / operacao[x+1];
> '*' : operacao[0] := operacao[0] * operacao[x+1];
> end;
> end;
> showmessage(floattostr(operacao[0]));
> end;
> 
> 
> > Pessoal, 
> >
> > tenho uma string montada e preciso converte-la para um valor numerico de
forma que o cálculo seja realizado.
> >
> >
> > Ex: "(100 + 20) / 4"
> >
> > Na verdade preciso que isso me retorne uma variavel com o valor= 30.
> >
> > Alguem ja fez algo parecido ?
> >
> >
> >
>

 



[As partes desta mensagem que não continham texto foram removidas]

Responder a