EConvertError Dor de cabeça = Skj pirando

06/02/2003

0

Galera não sei maid o que fazer.. Lutei e acho q fui vencido..
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

Skaarj

Responder

Posts

06/02/2003

Anonymous

Meu bruxo...Coloque sua expressão entre os comandos TRY EXCEPT
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


Responder

06/02/2003

Dor_poa

Cara... Acho meio dificil funcionar deste jeito... pois quado vc. esta fazendo strtofloat(edit1.text) vc esta convertendo um valor STR para Float, ou seja se tiver uma um sial de + ou - ou ate parenteses vai dar pau... EU sei que vc. sabe o que estou dizendo.. o que estou tentando te dizer e que desta forma NUNCA VAI DAR...

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...


Responder

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 ;


Responder

06/02/2003

Dor_poa

me manda um email dizendo como foi???


Responder

07/02/2003

Skaarj

Ae piazada, vlw!! Vou tntar!!


Responder

07/02/2003

Anonymous

Sorry Meu Bruxo....

Eu sei lá no que eu estava pensando...Não tinha prestado atenção no problema....BABEEEEEEEEEEEEEEEEEEIIIIIIIIIIIIIIIIIIIIIIIII :oops:


Responder

09/02/2003

Skaarj

me manda um email dizendo como foi???


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!!


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar