Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema al evaluar una expresión matemática (https://www.clubdelphi.com/foros/showthread.php?t=35379)

JesusG 08-09-2006 15:13:49

Problema al evaluar una expresión matemática
 
Saludos. Estoy buscando un metodo sencillo para evaluar una expresion matematica, por ejemplo, en un formulario con un TLabel y un TButton y añadiendo Math a uses, tengo:

procedure TForm1.Button1Click(Sender: TObject);
begin
form1.Label1.Caption:=floattostr(23/7+sqrt(2));
end;

Y funciona correctamente. Sin embargo lo que quiero es que el usuario introduzca su propia expresion para envaluar. Añado un TEdit y pongo:

procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
begin
s:=form1.Edit1.Text;
form1.Label1.Caption:=floattostr(s);
end;

Dandome error. ¿Alguna sugerencia?.
Gracias.

marceloalegre 08-09-2006 15:21:43

Cita:

Empezado por JesusG
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.Label1.Caption:=floattostr(23/7+sqrt(2));
end;


Claro que no funciona, sucede lo siguiente: (voy a comentar tu codigo)
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
begin
s:=form1.Edit1.Text; //aqui asignas a una variable string un string... esta correcto, no se si es necesario, pero es correcto.
form1.Label1.Caption:=floattostr(s);//el problema esta aca... ya que floattostr convierte de float a string, y s ya es un string!... donde no necesita conversión. 
end;

Ademas no es tan simple hacer que en el edit se maneje cualquier expresion, ya que aparte de las cuestiones tecnicas, si es usuario escribe mal la expresion no funciona, crea procedimientos/func. con los que quieras realizar en tu programa.


Saludos!

Neftali [Germán.Estévez] 08-09-2006 15:41:46

Para evaluar una expresión matemática escrita como cadena puedes utilizar alguno de los múltiples evaluadores gratuítos que hay por la red, delphi no puede hacerlo directamente.

Revisa este link.

Aquí tienes algunos ejemplos: 1 y 2.

NOTA: El segundo puedes comprobar en la demo que funciona perfectamente el ejempo que comentas. SOL=4,69992784808738 :D


La franja horaria es GMT +2. Ahora son las 22:35:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi