Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Calculo con un String (https://www.clubdelphi.com/foros/showthread.php?t=14049)

AMC 08-09-2004 14:26:32

Calculo con un String
 
Hola a todos.

Alguien sabe si existe en delphi una instruccion para el calculo del
contenido de un string.
El motivo de que sea un string, es porque dicho string es la concatenacion
de otras variables.

por ejemplo :

procedure
var
s : string;
begin
s := '((15*3) + 8 - (5*2))';

¿ como se puede calcular el valos de 's' ?

Gracias a todos.

Lepe 08-09-2004 15:06:15

Lo que buscas es un evaluador de expresiones matematicas, igual buscando por "parser" en los forso encuentras algo. Yo he buscado por evaluar expresiones y he obtenido este resultado en los foros.

evaluar expresiones

Saludos y Espero te ayude.

CHiCoLiTa 08-09-2004 15:14:08

Tal y como lo tienes puesto, te va a devolver exactamente lo mismo que tienes.
Si por el contrario quieres que lo que te aparezca es el resultado de la operacion matematica en una variable de tipo String podria poner algo como esto:
Código:

s := IntToStr((15*3) + 8 - (5*2));

Odnanref 08-09-2004 20:07:19

Igual que chicolita
 
Hola

Mira la idea anterior es la mas viable solo queria complementar con esta otra instrucción en el caso de que realices diviciones no te serviria InttoStr entonces utiliza FloatToStr.

Espero que te sirva.

Saludos desde Aguascalientes México

Odnanref 08-09-2004 20:18:54

Disculpa por mi respuesta anterior
 
Hola

Disculpa me deje llevar por lo que pensaba en ese momento y no analice bien tu pregunta.

Dices que tienes una variable con informacion de una ecuación como

s:='5*3/(6+7)'

entonces el hecho de que manejes caracteres como: " / ", " * ", " + ", " - " , " ( "; te impide hacer la conversion directa de string a a numero.

Tendrias que hacer un barrido de tu variable en busqueda de esos caracteres para poder identificar que operación realizaras.

Si me explicaras cual es la finalidad de tu programa tal vez te pueda ayudar mejor.

Saludos desde Aguascalientes, México.

AMC 09-09-2004 16:02:01

El motivo que dentro del string existan los operadores "+,-.*,/" asi como "(" y ")"
es porque dicho string se va componiendo segun unas formulas que como resultado
da otra formula a su vez que se deposita en un string.
¿ como se calcula la formula del string ?
Por Ejemplo : S := '((12*3) + 5 -(5*2))';

jachguate 09-09-2004 18:35:09

Este tema es regularmente parte de un curso de autómatas y compiladores, y las soluciones robustas se basan en el uso de árboles, además de un analizador sintactico/semántico para evaluar las expresiones.

Te han recomendado ya un hilo en el que se dan algunas alternativas de componentes ya hechos que evaluan las expresiones. ¿no te sirve alguno de ellos?

hasta luego.

;)

soul6301 14-09-2004 20:46:53

Yo buscaba lo mismo cuando recién ingresé al club, pero no exista tal cosa (hasta donde sé) que exista un evaluador de código como el que tú quieres. Si deseas evaluar expresiones matemátcias, debes usar un evaluador matemático, al cual le das un función (de tipo string) y devuelve un resultado (de tipo extended). Existe un componente que hace eso, pero el que obtuve es muy limitado en sus funciones. Yo hice el mío, propio, si quieres puedo darte un ejemplo o enseñarte a desarrollar uno.

Suerte.


La franja horaria es GMT +2. Ahora son las 13:59:52.

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