Guest Jorge Jr Postado Agosto 2, 2007 Denunciar Share Postado Agosto 2, 2007 Pessoal preciso utilizar uma formula que esta numa tabela do banco de dados. Porem o sistema não consegui calcular, quando passo o valor para a variavel este valor não consegue pegar os dados de outras variaveis.varv1, v2,v3,v4 : double;vtotal : double;procedure TFrmResultado.BitBtn5Click(Sender: TObject);varBeginv1 := strtofloat(edit1.text);v2 := strtofloat(edit2.text);v3 := strtofloat(edit3.text);v4 := strtofloat(edit4.text);vtotal :=tabelaformula.value; end;Sendo que o valor de campo tabelaformula e´igual a v1+v2+v3+v4alguém sabe como posso fazer isso? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Jorge Jr Postado Agosto 5, 2007 Denunciar Share Postado Agosto 5, 2007 Pessoal com a valorosa ajuda do amigos do forum, consegui resolver o raio da formula.O caso do V1 mausculo tinha sentido mesmo, coloquei todas as variaveis em mausculo e a formula também ai deu certo, não tinha percebido mais a formula esta em minusculo. Por isso da erro.Muito obrigado a todos que me ajudaram. Mais ainda ficou um probleminha:Quando uso dez variaveis ou mais, a decima pega o valor da primeira mais um zero que não sei de onde saiu.formula := ZTable2FORMULA.AsString;i := 1;while Pos('V'+inttostr(i), formula) > 0 dobegincase i of1 : FindReplace('V'+inttostr(i),floattostr(V1), formula); EX: O VALOR É 22 : FindReplace('V'+inttostr(i),floattostr(V2), formula); 33 : FindReplace('V'+inttostr(i),floattostr(V3), formula); 04 : FindReplace('V'+inttostr(i),floattostr(V4), formula); 05 : FindReplace('V'+inttostr(i),floattostr(V5), formula); 06 : FindReplace('V'+inttostr(i),floattostr(V6), formula); 07 : FindReplace('V'+inttostr(i),floattostr(V7), formula); 08 : FindReplace('V'+inttostr(i),floattostr(V8), formula); 09 : FindReplace('V'+inttostr(i),floattostr(V9), formula); 210 : FindReplace('V'+inttostr(i),floattostr(V10), formula); 5end;i := i + 1;end;Na formula aparece 2+3+0+0+0+0+0+0+2+20 parece a primeira variavel e um zero em vez do numero 5.Delculpe Micheus ... estava fazendo outro serviço e não li direito o que tinha escrito, e tambem foi mal por me expressar erradamente a voce e ao Jorge, não era definição de variaveis a que me referia e sim a string que talvez estivesse com V1 maiusculo ... quanto ao trim é justamente o que você se referiu ( espaços no inicio e no fim ) , mas fazendo um teste rapido aqui no meu micro o erro pode estar justamente quando ele joga a string do banco de dados para o componente que aceita um widestring.valeu .... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --Jonas -- Postado Agosto 5, 2007 Denunciar Share Postado Agosto 5, 2007 Isso ta facil, porque o que acontece é isso:A sua string é V11 quando ele vai procurar encontra na V11 o V1 ( as duas primeiras letras ) da primeira, ai substitui pelo valor da V1 , neste caso tem que ter um controle quando i for maior que 9. numa maneira bem simples basta trocar na formula a string V10 por X10, mantendo o valor da variavel V10. formula := ZTable2FORMULA.AsString;i := 1;while Pos('V'+inttostr(i), formula) > 0 do begin case i of 1 : FindReplace('V'+inttostr(i),floattostr(V1), formula); EX: O VALOR É 2 2 : FindReplace('V'+inttostr(i),floattostr(V2), formula); 3 3 : FindReplace('V'+inttostr(i),floattostr(V3), formula); 0 4 : FindReplace('V'+inttostr(i),floattostr(V4), formula); 0 5 : FindReplace('V'+inttostr(i),floattostr(V5), formula); 0 6 : FindReplace('V'+inttostr(i),floattostr(V6), formula); 0 7 : FindReplace('V'+inttostr(i),floattostr(V7), formula); 0 8 : FindReplace('V'+inttostr(i),floattostr(V8), formula); 0 9 : FindReplace('V'+inttostr(i),floattostr(V9), formula); 2 10 : FindReplace('X'+inttostr(i),floattostr(V10), formula); 5 end;i := i + 1;end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Jorge Jr Postado Agosto 5, 2007 Denunciar Share Postado Agosto 5, 2007 Jonas, não deu certo. Não consegui pegar o valor para X10 na formula.troquei o V10 por X10 na formula (no campo da tabela).Da mensagem de erro abaixo:Project apluslab.exe raised exception class eOleException with message '"X10 não" esta definido'.Isso ta facil, porque o que acontece é isso:A sua string é V11 quando ele vai procurar encontra na V11 o V1 ( as duas primeiras letras ) da primeira, ai substitui pelo valor da V1 , neste caso tem que ter um controle quando i for maior que 9. numa maneira bem simples basta trocar na formula a string V10 por X10, mantendo o valor da variavel V10. formula := ZTable2FORMULA.AsString;i := 1;while Pos('V'+inttostr(i), formula) > 0 do begin case i of 1 : FindReplace('V'+inttostr(i),floattostr(V1), formula); EX: O VALOR É 2 2 : FindReplace('V'+inttostr(i),floattostr(V2), formula); 3 3 : FindReplace('V'+inttostr(i),floattostr(V3), formula); 0 4 : FindReplace('V'+inttostr(i),floattostr(V4), formula); 0 5 : FindReplace('V'+inttostr(i),floattostr(V5), formula); 0 6 : FindReplace('V'+inttostr(i),floattostr(V6), formula); 0 7 : FindReplace('V'+inttostr(i),floattostr(V7), formula); 0 8 : FindReplace('V'+inttostr(i),floattostr(V8), formula); 0 9 : FindReplace('V'+inttostr(i),floattostr(V9), formula); 2 10 : FindReplace('X'+inttostr(i),floattostr(V10), formula); 5 end;i := i + 1;end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --Jonas -- Postado Agosto 5, 2007 Denunciar Share Postado Agosto 5, 2007 Desculpe Jorge, erro bobo meu ... string X mas não mandei procurar por ela....rs estou fazendo meio as pressas so pra resolver o seu problema, mas depois você pode procurar uma maneira melhor ... ok ?formula := ZTable2FORMULA.AsString; i := 1; while Pos('V'+inttostr(i), formula) > 0 do begin case i of 1 : FindReplace('V'+inttostr(i),floattostr(V1), formula); EX: O VALOR É 2 2 : FindReplace('V'+inttostr(i),floattostr(V2), formula); 3 3 : FindReplace('V'+inttostr(i),floattostr(V3), formula); 0 4 : FindReplace('V'+inttostr(i),floattostr(V4), formula); 0 5 : FindReplace('V'+inttostr(i),floattostr(V5), formula); 0 6 : FindReplace('V'+inttostr(i),floattostr(V6), formula); 0 7 : FindReplace('V'+inttostr(i),floattostr(V7), formula); 0 8 : FindReplace('V'+inttostr(i),floattostr(V8), formula); 0 9 : FindReplace('V'+inttostr(i),floattostr(V9), formula); 2 10 : FindReplace('X'+inttostr(i),floattostr(V10), formula); 5 end; while Pos('X'+inttostr(i), formula) > 0 do begin case i of 10 : FindReplace('X'+inttostr(i),floattostr(V10), formula); EX: O VALOR É 5 11 : FindReplace('X'+inttostr(i),floattostr(V11), formula); 4 12 : FindReplace('X'+inttostr(i),floattostr(V12), formula); 0 13 : FindReplace('X'+inttostr(i),floattostr(V13), formula); 0 14 : FindReplace('X'+inttostr(i),floattostr(V14), formula); 0 15 : FindReplace('X'+inttostr(i),floattostr(V15), formula); 0 16 : FindReplace('X'+inttostr(i),floattostr(V16), formula); 0 18 : FindReplace('X'+inttostr(i),floattostr(V17), formula); 0 19 : FindReplace('X'+inttostr(i),floattostr(V18), formula); 7 end; i := i + 1; end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --Jonas -- Postado Agosto 5, 2007 Denunciar Share Postado Agosto 5, 2007 Esqueci .... tire esta linha do codigo10 : FindReplace('X'+inttostr(i),floattostr(V10), formula); 5eu coloquei V10 ate V18 , tire do codigo as variaveis que não estiverem definidasnão sei se vai funcionar corretamente, mas se você captou a ideia é so fazer as modificações no seu codigo ... valeu ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Jorge Jr Postado Agosto 5, 2007 Denunciar Share Postado Agosto 5, 2007 Consegui de outra maneira, mais sua ajuda foi fundamental Mestre.Como no sistema vou trabalhar com no maximo 10 variaveis e sei que seria preciso meses ou quem sabe anos para explicar o cliente por que o X10 no meio de tantos V. Rsssssssss.Comecei o o contator I com 0 (zero), assim é mais facil explicar ao cliente que as formulas começaram sempre com V0. Voce sabe como é o usuario final, né???? Ele vai acabar socando um V10 na formula em vez de X10.Jonas, muitissimo obrigado mesmo. Sem a sua ajuda iria levar muito tempo para resolver isso, e quem sabe até acabaria desistindo do projeto.Um forte Abraço,JorgeEsqueci .... tire esta linha do codigo10 : FindReplace('X'+inttostr(i),floattostr(V10), formula); 5eu coloquei V10 ate V18 , tire do codigo as variaveis que não estiverem definidasnão sei se vai funcionar corretamente, mas se você captou a ideia é so fazer as modificações no seu codigo ... valeu ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --Jonas -- Postado Agosto 5, 2007 Denunciar Share Postado Agosto 5, 2007 Jorge ... tentando resolver isso pra voce acabei aprendendo um pouco mais tambem .... resolvidoUm abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest Jorge Jr
Pessoal preciso utilizar uma formula que esta numa tabela do banco de dados. Porem o sistema
não consegui calcular, quando passo o valor para a variavel este valor não consegue pegar os
dados de outras variaveis.
var
v1, v2,v3,v4 : double;
vtotal : double;
procedure TFrmResultado.BitBtn5Click(Sender: TObject);
var
Begin
v1 := strtofloat(edit1.text);
v2 := strtofloat(edit2.text);
v3 := strtofloat(edit3.text);
v4 := strtofloat(edit4.text);
vtotal :=tabelaformula.value;
end;
Sendo que o valor de campo tabelaformula e´igual a v1+v2+v3+v4
alguém sabe como posso fazer isso?
Link para o comentário
Compartilhar em outros sites
32 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.