Ir para conteúdo
Fórum Script Brasil
  • 0

[resolvido] Duvidas Sobre Variaveis


Guest Jorge Jr

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

Posts Recomendados

  • 0
Guest Jorge Jr

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 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('V'+inttostr(i),floattostr(V10), formula); 5

end;

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 ....

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Jonas --

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;

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Jorge Jr

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;

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Jonas --

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;

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Jonas --

Esqueci .... tire esta linha do codigo

10 : FindReplace('X'+inttostr(i),floattostr(V10), formula); 5

eu coloquei V10 ate V18 , tire do codigo as variaveis que não estiverem definidas

não sei se vai funcionar corretamente, mas se você captou a ideia é so fazer as modificações no seu codigo ... valeu ?

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Jorge Jr

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,

Jorge

Esqueci .... tire esta linha do codigo

10 : FindReplace('X'+inttostr(i),floattostr(V10), formula); 5

eu coloquei V10 ate V18 , tire do codigo as variaveis que não estiverem definidas

não sei se vai funcionar corretamente, mas se você captou a ideia é so fazer as modificações no seu codigo ... valeu ?

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...