RES: [delphi-br] Decompor Expressão Matemática

2006-06-02 Por tôpico Moked - Tamara \(Brazil\)



E ai, q q vc quer fazer com ela? Decompor como? Mais especificações, pleasers..
 
Tamara Clemente - Suporte Técnico
Moked do Brasil - Consultoria de Segurança Empresarial
Divisão MokInf de Informática
PABX: (55-11) 5071-2748
[EMAIL PROTECTED] mailto:[EMAIL PROTECTED] 
www.moked.com.br http://www.moked.com.br/ 




De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Edilson Gonçalves
Enviada em: quinta-feira, 1 de junho de 2006 18:16
Para: delphi-br@yahoogrupos.com.br
Assunto: [delphi-br] Decompor Expressão Matemática


Amigos,

Estou com o seguinte problema: Tenho armazenado no Banco de Dados como uma
string uma expressão matemática, como por exemplo: (100 * 25)/100, INCLUSIVE
COM OS PARENTESES.


[As partes desta mensagem que não continham texto foram removidas]



-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 






Yahoo! Grupos, um serviço oferecido por: 
PUBLICIDADE
 http://br.ard.yahoo.com/SIG=12fapv1s0/M=396559.7942981.9535540.2369893/D=brclubs/S=2137111264:HM/Y=BR/EXP=1149203582/A=3739190/R=0/id=noscript/SIG=154dcqslu/*http://lt.dell.com/lt/lt.aspx?CID=13040LID=340715DGC=BADGSeg=DHSDURL=http://www1.la.dell.com/content/products/category.aspx/desktops?c%3dbr%26l%3dpt%26s%3ddhs  



Links do Yahoo! Grupos


* Para visitar o site do seu grupo na web, acesse:
 http://br.groups.yahoo.com/group/delphi-br/
  
* Para sair deste grupo, envie um e-mail para:
 [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] 
  
* O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html . 




[As partes desta mensagem que não continham texto foram removidas]







-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

* Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

* Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED]






  




  
Yahoo! Grupos, um serviço oferecido por:
  
  

PUBLICIDADE




  
  



  




  
Links do Yahoo! Grupos

Para visitar o site do seu grupo na web, acesse:http://br.groups.yahoo.com/group/delphi-br/
Para sair deste grupo, envie um e-mail para:[EMAIL PROTECTED]
O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.











RES: [delphi-br] Decompor Expressão Matemática

2006-06-02 Por tôpico Moked - Tamara \(Brazil\)



Ah ta, agora eu entendi.rs vc pode percorrer a string procurando por parenteses, achado os parenteses copia para outra string o conteudo de dentro do parenteses. Dai então vc percorre a string novamente a procura de um operador(+, -, *, /...) achado ele, vc pega esta string converte para inteiro, faz o msm com o outro numero, o operador vc compara como string para fazer a conta, e a msm coisa da pra fazer com o resto(ex:/12)...
 
Claro q da pra simplificar este processo, ñ seria necessário percorres tantas vezes a string assim pra poder separá-la.
 
Qquel coisa, estamos ai...
 
Tamara Clemente - Suporte Técnico
Moked do Brasil - Consultoria de Segurança Empresarial
Divisão MokInf de Informática
PABX: (55-11) 5071-2748
[EMAIL PROTECTED] mailto:[EMAIL PROTECTED] 
www.moked.com.br http://www.moked.com.br/ 




De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Edilson Gonçalves
Enviada em: quinta-feira, 1 de junho de 2006 19:16
Para: delphi-br@yahoogrupos.com.br
Assunto: [delphi-br] Decompor Expressão Matemática


Amigos,

Estou com o seguinte problema: Tenho armazenado no banco de bancos em campo
do tipo VARCHAR, uma expressão matemática. Como por exemplo: (100 * 30)/12,
INCLUSIVE COM OS PARENTESES.
O que preciso é: buscar no banco de dados esta expressão e atribuir o seu
resultado a um campo TEdit. Mas nao estou conseguindo converter a string
para que a mesma seja executada.

Se puderem ajudar, agradeço.


Edilson Gonçalves
PlanejarSistemas Ltda
São Gotardo - Minas Gerais


[As partes desta mensagem que não continham texto foram removidas]



-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 






Yahoo! Grupos, um serviço oferecido por: 
PUBLICIDADE
 http://br.ard.yahoo.com/SIG=12fjph1fi/M=396559.7942981.9535540.2369893/D=brclubs/S=2137111264:HM/Y=BR/EXP=1149203983/A=3739190/R=0/id=noscript/SIG=154dcqslu/*http://lt.dell.com/lt/lt.aspx?CID=13040LID=340715DGC=BADGSeg=DHSDURL=http://www1.la.dell.com/content/products/category.aspx/desktops?c%3dbr%26l%3dpt%26s%3ddhs  



Links do Yahoo! Grupos


* Para visitar o site do seu grupo na web, acesse:
 http://br.groups.yahoo.com/group/delphi-br/
  
* Para sair deste grupo, envie um e-mail para:
 [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] 
  
* O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html . 




[As partes desta mensagem que não continham texto foram removidas]







-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

* Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

* Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED]






  




  
Yahoo! Grupos, um serviço oferecido por:
  
  

PUBLICIDADE




  
  



  




  
Links do Yahoo! Grupos

Para visitar o site do seu grupo na web, acesse:http://br.groups.yahoo.com/group/delphi-br/
Para sair deste grupo, envie um e-mail para:[EMAIL PROTECTED]
O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.











Re: RES: [delphi-br] Decompor Expressão Matemática

2006-06-02 Por tôpico Fernando Nomellini



Excelente rotina, muito útil. 
Eu citei o PascalScript, mas ele é muita coisa quando se deseja somente um parse simples de uma expressão matemática, e essa ritona vem bem a calhar, já a incluí no meu projeto. Valeu.

Fernando Nomellini
 - Original Message - 
 From: Rubem Nascimento da Rocha 
 To: delphi-br@yahoogrupos.com.br 
 Sent: Friday, June 02, 2006 8:56 AM
 Subject: RE: RES: [delphi-br] Decompor Expressão Matemática


 Quem procura, acha!
 http://www.swissdelphicenter.ch/en/showcode.php?id=470

 Sds.


[As partes desta mensagem que não continham texto foram removidas]







-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

* Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

* Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED]






  




  
Yahoo! Grupos, um serviço oferecido por:
  
  

PUBLICIDADE




  
  



  




  
Links do Yahoo! Grupos

Para visitar o site do seu grupo na web, acesse:http://br.groups.yahoo.com/group/delphi-br/
Para sair deste grupo, envie um e-mail para:[EMAIL PROTECTED]
O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.











RES: [delphi-br] Decompor Expressão Matemática

2006-06-02 Por tôpico Alexandre



Estimado,

Bom dia. Não deu pra entender. Está vaga sua questão. Se você quer pegar
esta string de algum lugar específico e executar pra obter o resultado,
parece simples, veja:


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Math;

type
 TForm1 = class(TForm)
 Button1: TButton;
 procedure Button1Click(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

function Calculador(sExpressao: string; iDigitosResultado: Byte): String;
var
 z: Char;
 iPos: Integer;

 function StrToReal(sString: string): Real;
 var
 r: Real;
 Pos: Integer;
 begin
 Val(sString, r, Pos);
 if Pos  0 then Val(Copy(sString, 1, Pos - 1), r, Pos);
 Result := r;
 end;

 function RealToStr(iNumeroReal: Extended; iDigitos: Byte): string;
 var
 S: string;
 begin
 Str(iNumeroReal: 0: iDigitos, S);
 realToStr := S;
 end;

 procedure NextChar;
 var
 s: string;
 begin
 if ipos  Length(sExpressao) then
 begin
 z := #9;
 Exit;
 end
 else
 begin
 s := Copy(sExpressao, ipos, 1);
 z := s[1];
 Inc(ipos);
 end;
 if z = ' ' then nextchar;
 end;

 function Expressao: Real;
 var
 w: Real;

 function Factor: Real;
 var
 ws: string;
 begin
 Nextchar;
 if z in ['0'..'9'] then
 begin
 ws := '';
 repeat
 ws := ws + z;
 nextchar
 until not (z in ['0'..'9', '.']);
 Factor := StrToReal(ws);
 end
 else if z = '(' then
 begin
 Factor := Expressao;
 nextchar
 end
 else if z = '+' then Factor := +Factor
 else if Z = '-' then Factor := -Factor;
 end;

 function Term: Real;
 var
 W: Real;
 begin
 W := Factor;
 while Z in ['*', '/'] do
 if z = '*' then w := w * Factor
 else
 w := w / Factor;
 Term := w;
 end;

 begin
 w := term;
 while z in ['+', '-'] do
 if z = '+' then w := w + term
 else
 w := w - term;
 Expressao:= w;
 end;
begin
 ipos := 1;
 Result := RealToStr(Expressao, iDigitosResultado);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 sExpressao: string;
begin
 sExpressao := '(100 * 25)/100';
 ShowMessage(sExpressao + ' = ' + Calculador(sExpressao, 3));
end;
 
Teste aí e retorne. Só um detalhe aritimético estimado: essa conta aí que
você apresentou no exemplo dispensa o parêntesis.

Saudações. 

---

[]'s

Alexandre

Frase da semana: De todos os meios que conduzem o homem à riqueza, os dois
mais certos são ser perseverante e ser trabalhador. (Reyband)

Frase de la semana: De todos los medios que llevan un hombre a la riqueza,
los dos más ciertos y saludable és estar perseverando y ser trabajador.
(Reyband)


-Mensagem original-
De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de Edilson Gonçalves
Enviada em: quinta-feira, 1 de junho de 2006 18:16
Para: delphi-br@yahoogrupos.com.br
Assunto: [delphi-br] Decompor Expressão Matemática


Amigos,

Estou com o seguinte problema: Tenho armazenado no Banco de Dados como uma
string uma expressão matemática, como por exemplo: (100 * 25)/100, INCLUSIVE
COM OS PARENTESES.









-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

* Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

* Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED]






  




  
Yahoo! Grupos, um serviço oferecido por:
  
  

PUBLICIDADE




  
  



  




  
Links do Yahoo! Grupos

Para visitar o site do seu grupo na web, acesse:http://br.groups.yahoo.com/group/delphi-br/
Para sair deste grupo, envie um e-mail para:[EMAIL PROTECTED]
O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.