RES: [delphi-br] Decompor Expressão Matemática
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
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
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
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!.