Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #15  
Antiguo 12-08-2010
aarmalo aarmalo is offline
Miembro
 
Registrado: mar 2005
Ubicación: México
Posts: 46
Poder: 0
aarmalo Va por buen camino
Bueno en python y otros lenguajes existe algo que se llama expresiones regulares, probablemente puedas usar python detrás y sea el que te analice lo que escribiste en el memo, algo así rápido y simple para mostrar lo que te digo, sería:

Código:
import re

buf="Estudio de Globulos en Sangre bla bla bla...\n\n?1 Globulos Rojos = ####\n?2 Globulos Blancos = ####\n\n\n?3 = $1(?1-?2)\n\nResultados = ?3 mlg/g\n?4 = $2(?3-?2)\nOtro resultado ?4 mlg/g"

expresion=("\?([1-9]\s)[^=]")
r=re.compile(expresion,re.S)
var=r.findall(buf)
print var
expresion=("\?([1-9].)=(.*?)\n")
r=re.compile(expresion,re.S)
var=r.findall(buf)
print var
lo ejecutamos


python prb.py
['1 ', '2 ', '3 ', '4 '] <---Lista las variables
[('3 ', ' $1(?1-?2)'), ('4 ', ' $2(?3-?2)')] <-- Me dice que la variable 3 se va a cargar con la operación representada por ?1-?2 y 4 con la operación ?3-?2

Tienes la función replace, para cuando quieras sustituir las variables con su respectivo valor, en su defecto también puedes hacer uso de las expresiones regulares para reemplazar, es algo muy simple pero extremadamente potente

que tan sólo sería buf.replace("?1","3.141592......")

por ejemplo:
Código:
import re

var1=4.35
var2=2.5
buf="Estudio de Globulos en Sangre bla bla bla...\n\n?1 Globulos Rojos = ####\n?2 Globulos Blancos = ####\n?3 = (?1-?2)\n\nResultados = ?3 mlg/g\n?4 = (?3-?2)\nOtro resultado ?4 mlg/g"
print buf
expresion=("\?([1-9]\s)[^=]")
r=re.compile(expresion,re.S)
var=r.findall(buf)
print var
expresion=("\?([1-9].)= (.*?)\n")
r=re.compile(expresion,re.S)
var=r.findall(buf)
print var
funcion=var[0][1]
funcion=funcion.replace("?1",str(var1))
funcion=funcion.replace("?2",str(var2))
var3=eval(funcion)
print '?3 '
print var3
funcion=var[1][1]
funcion=funcion.replace("?3",str(var3))
funcion=funcion.replace("?2",str(var2))
var4=eval(funcion)
print '?4 '
print var4
bb='?'+var[0][0]+'= '+var[0][1]
buf=buf.replace(bb,'')
bb='?'+var[1][0]+'= '+var[1][1]
buf=buf.replace(bb,'')
buf=buf.replace("?1",str(var1))
buf=buf.replace("?2",str(var2))
buf=buf.replace("?3",str(var3))
buf=buf.replace("?4",str(var4))
print buf
En la salida de este programa tendrías:

Código:
 python prb.py
Estudio de Globulos en Sangre bla bla bla...

?1 Globulos Rojos = ####
?2 Globulos Blancos = ####
?3 = (?1-?2)

Resultados = ?3 mlg/g
?4 = (?3-?2)
Otro resultado ?4 mlg/g
['1 ', '2 ', '3 ', '4 ']
[('3 ', '(?1-?2)'), ('4 ', '(?3-?2)')]
?3 
1.85
?4 
-0.65
Estudio de Globulos en Sangre bla bla bla...

4.35 Globulos Rojos = ####
2.5 Globulos Blancos = ####


Resultados = 1.85 mlg/g

Otro resultado -0.65 mlg/g
Ya es cuestión de echarle imaginación y hacerlo tan complejo como lo quieras hacer. Igual te puedes evitar mucho de esto teniendo una tabla de dos columnas donde la primer columna sean los nombres de las variables e la segunda su valor, de lado derecho o izquierdo de la tabla tener el Memo donde escriban el reporte, así se evitarían poner las formulas dentro de Memo, que despues tendrías que quitar a la hora de la impresión.

Si no te gusta la idea de la tabla bien podría ser sustituida por otro Memo donde ellos sólo escriban

Código:
var1=4
var2=5
var3=var1-var2
var4=var3-var1
etc....
y en el otro Memo

Código:
Reporte bla bla bla

var1 Globulos rojos
var2 Globulos blancos

Resultado var3 mlg/g

Otro resultado var4 mlg/g
También puede dar la opción de abrir una plantilla, la cual, ya sea con el otro memo o la tabla tendría listo las variables para que sólo las llenemos con su valor, por ejemplo que aparezca en el Memo o en la Tabla

var1=
var2=
var3=var1-var2
var4=var3-var1

Jejeje hay una infinidad de soluciones para resolver un problema

Si quieres usar completamente delphi, me imagino que en el foro debe de existir mas información sobre las expresiones regulares en delphi

Buscando rapidamente en internet encontré el siguiente enlace
http://www.latiumsoftware.com/es/articles/00009.php <--TRegExpr

Tal vez te sirva
__________________
No todo es lo que parece y lo que parece no es todo.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Sistema TPV Gaim2205 Varios 4 07-01-2009 15:14:24
Sistema!! einarcito Varios 0 11-10-2008 21:18:07
mas de 1 sistema a la vez Patricio Firebird e Interbase 7 27-08-2008 20:03:11
Unidad del sistema madmai Windows 8 06-11-2007 09:06:23
Mejor sistema de BD fide Conexión con bases de datos 8 29-10-2007 18:04:11


La franja horaria es GMT +2. Ahora son las 20:43:08.


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
Copyright 1996-2007 Club Delphi