EConvertError Dor de cabeça = Skj pirando
06/02/2003
0
Por exemplo, se eu colocar a seguinte expressão pra uma variavel e quero mostrar na edit assim:
var calculo:real;
begin
calculo:= ((1*6)+(2*4)/10);
edit1.text:=floattostr(calculo);
Okay né?
Agora digamos q a expressao foi digitada em um edit e quero fazer o calculo, assim:
var calculo:real;
begin
calculo:= strtofloat(edit1.text);
Adivinha? È encontrar um carater e dá rolo.. Pd ser parenteses, mais, o q for..
Como faço pra pegar a expressao [q sempre irá mudar] e calcular?
Por favor companheiros, vinguem meu sangue derramado sobre essa besta implacável!!
Skaarj
Posts
06/02/2003
Anonymous
como segue o exemplo abaixo
TRY
var calculo:real;
temp : string;
i : integer
begin
calculo:= strtofloat(edit1.text);
edit1.text:=floattostr(calculo);
except
//Aqui voce trata o problema que ocorreu
//se o usuario digitou algum CARACTER voce simplesmente faz um loop
//no objeto EDIT1 ´
for i:= 1 to length(Edit1.Text) do begin
if Copy(Edit1,Text,i,1) in [´1´,´2´ etc..etc] then
temp:=temp+Copy(Edit1,Text,i,1)
else break
edit1.text:=floattostr(temp);
end;
Espero ter ajudado
06/02/2003
Dor_poa
U nunca prescisei fazer isto que tu esta fazendo, mas se eu tivesse que fazer eu só teria 2 alternativa:
1º fazer uma telinha tipo calculadora...... onde ele ia clicar nos sinais...
2º Monitoraria tudo que esta sendo digitado no edit e armazenaria em variaveis ou array:
tenho que fazer a conta 5+5
* Quando ele pressionasse a 1º cadeia de numeros eu armazenava na variavel1 (ou array) o numero 5 (isto tudo no evento onkeypress ou onkeydow)
var1 := 5;
* Quando pressionasse o sinal de adiçao a mesma coisa
ex:
Op1 := ´+´;
* Quando ele pressionasse a 2ºcadeia de numeros eu armazenava na variavel2 (ou array) o numero 5
var2 := 5;
Quando o cara pressionasse o enter, e que a maluquice entrava em ação:
primeiro vc. tera que saber quantos operadores foi usado e se estao dentro de pareteses pois nao esqueca que o campo Op1 e uma String (Op1e o tipo de operacao)
ex:
if op1= ´+´ then
Calculo := var1 + var2;
if op1= ´-´ then
Calculo := var1 - var2;
if op1= ´*´ then
Calculo := var1 * var2;
Obs.: ë obvio que nao prescisa ser uma string o campo de operaçoes, existe um tipo de variavel especifica para as operaçoes, mas faz muito , mas muito tempo que nao a uso e nao me lembro no momento....
Eu acho que vc. entendeu o que eu quis te passar, Cara, isto é mais facil do que tu pensa, basta seguir esta lunha de raciocinio....
Abraços...
06/02/2003
Dor_poa
OBSERVACAO
************************************************************
estou partindo do ponto de vita que as expressoes a serem realizadas estejam no edit, náo os numeros pressionados. Pois se vc. quiser evitar que os usuarios escreva valores diferente de numeros utilize este codigo no evento onkeypress ou onkeydow
if (Key in [´1´..´9´]) then
Key := Key
Else begin
Key := Chr(0) ;
end ;
07/02/2003
Anonymous
Eu sei lá no que eu estava pensando...Não tinha prestado atenção no problema....BABEEEEEEEEEEEEEEEEEEIIIIIIIIIIIIIIIIIIIIIIIII :oops:
09/02/2003
Skaarj
Ae cara, não precisei fazer, é eu ia tr q guardar td´s essas variáveis em uma tabela, ia dar o maior rolo [era um formula genérica pra dpois ser aplicada[calculo de boletim escolar]], mas valeu!!
Clique aqui para fazer login e interagir na Comunidade :)