![]() |
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. |
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. |
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)); |
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 |
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. |
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))'; |
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. ;) |
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 18:49:37. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi