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, 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 ? > > > > > > >