Oi Jackson,

Seu problema é muito mais de lógica que de Flex. Analisando seu código eu vi
que você tem dois parâmetros que vão entrar no cálculo. "altura" e
"largura", o restante são os operadores matemáticos (+, -, / e *) e algum
número para fazer parte da fórmula.
O lance aqui é fazer a fórmula com parâmetros que você possa identificar
facilmente. 
Por exemplo:
Ao invés de ser assim:
<formula>(Number(altura.text)*Number(largura.text)/2)</formula>
Faça assim:
<formula>(@altura@ * @largura@ / 2)</formula>

Dessa forma você pode procurar na string formula por uma substring que
estiver entre os símbolos "@". Em Seguida procurar pelo símbolo matemático e
assim vai até terminar a string.
Você estará fazendo um parse nessa string analisando cada pedaço e
identificando cada um deles.
No final você vai ter a posição de cada parâmetro e dos símbolos matemáticos
para fazer a conta.

Sacou?

Procure por Math String Parser "parse de expressões matemáticas"

Rafael Franco Carvalho 

-----Original Message-----
From: flexdev@googlegroups.com [mailto:flex...@googlegroups.com] On Behalf
Of jacksondossan...@gmail.com
Sent: Wednesday, November 25, 2009 10:48 AM
To: flexdev
Subject: [flexdev] String em expressão matemárica


Olá,

Estou iniciando em flex, e comecei a fazer uma calculadora que deve
calcular a quantidade necessária para se utilizar um determinado
produto.
Parece algo simples mas não tenho ideia de como fazer. A calculadora
funciona da seguinte maneira a pessoa escolhe um produto e este tem
uma fórmula de calcular a quantidade que se utlilizará do produto. Bom
eu estou guardando os produtos e suas formulas em um xml, só que o
problema é que qdo eu carrego a formula ela me vem como um string e
não efetua o calculo.
Alguém saberia me dizer como devo proceder.

Agradeço a colaboração

Segue meu script inicial


<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009";
                           xmlns:s="library://ns.adobe.com/flex/spark"
                           xmlns:mx="library://ns.adobe.com/flex/halo"
minWidth="1024"
minHeight="768" initialize="carregaXML()">
        <fx:Declarations>

        </fx:Declarations>
        <fx:Script source="operacoes.as">

        </fx:Script>
        <fx:Script>
                <![CDATA[

                        private var meuXML:XML;
                        private var loader:URLLoader;

                        [Bindable]
                        private var Produtos:Array = new Array();

                        private function carregaXML():void {
                                loader=new URLLoader();
                                loader.addEventListener(Event.COMPLETE,
onComplete);
                                loader.load(new URLRequest("formulas.xml"));
                        }

                        private function onComplete(evt:Event):void
                        {
                                meuXML = new XML(loader.data);

                                for(var i:int; i < meuXML..produto.length();
i++){
        
Produtos.push({label:meuXML..produto[i].nome});
                                }
                        }
                        private function calcular():void{
                                resultado.text =
meuXML..produto[produto.selectedIndex].formula;
                        }
                ]]>
        </fx:Script>
        <s:Label x="68" y="51" text="Altura:&#xd;" textAlign="left" />
        <s:Label x="56" y="86" text="Largura:&#xd;" textAlign="left"/>
        <s:TextInput x="117" y="44" id="altura" text="10"/>
        <s:TextInput x="117" y="78" id="largura"/>
        <s:TextInput x="331" y="44" id="resultado"/>
        <s:Button x="175" y="118" label="Calcular" click="{calcular()}"/>
        <mx:ComboBox x="117" y="10" editable="true" id="produto"
dataProvider="{Produtos}" prompt="Selecione" selectedIndex="-1" ></
mx:ComboBox>
</s:Application>

formulas.xml
<?xml version="1.0" encoding="utf-8"?>
<produtos>
        <produto>
                <nome>Produto 1</nome>
        
<formula>(Number(altura.text)*Number(largura.text)*2)</formula>
        </produto>
        <produto>
                <nome>Produto 2</nome>
        
<formula>(Number(altura.text)*Number(largura.text)/2)</formula>
        </produto>
        <produto>
                <nome>Produto 3</nome>
        
<formula>(Number(altura.text)*Number(largura.text)+10)</formula>
        </produto>
</produtos>



--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
Para sair da lista, envie um email em branco para 
flexdev-unsubscr...@googlegroups.com
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Reply via email to