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

Dividindo no Delphi


João Paulo Taraciuk

Pergunta

Olá pessoal, estou encontrando dificuldades em realizar uma divisão no Delphi 7, assim, eu tenho um Txnumedit onde coloco o valor de um produto à prazo, aí em um edit tem o valor da margem de lucro, então em um outro Txnum edit tem que aparecer o valo de custo, mais ou menos assim

Eu tentei dessa maneira, é que eu sou iniciante em programação!!

procedure TFrm_Produtos.Txnumedit_aprazoExit(Sender: TObject);

var

um, dois: String;

begin

um:= Txnumedit_aprazo.Text;

dois:= '1,' + TEdit_Margem.Text;//Aqui coloque 1, + porque no edit eu pus 10,00, então ficaria 1,10 porcento a margem

Txnumedit_Custo.Text:=(um)div (dois) ;

end;

//Seria mais ou menos assim, o usuário coloca o valor do produto à prazo no Txnumedit à prazo, então o sistema

//calcularia pela margem que está no Tedit_margem e joga o valor do custo no Txnumedit_custo

//por que digamos que eu coloque no valor à prazo R$ 5,50 e na margem 10% então 5,50 Dividido por 1,10

//dá exatamente o valor de custo R$ 5,00

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
procedure TFrm_Produtos.Txnumedit_aprazoExit(Sender: TObject); 
var 
  um, dois: String; 
begin 
  um:= Txnumedit_aprazo.Text; 
  dois:= '1,' + TEdit_Margem.Text;//Aqui coloque 1, + porque no edit eu pus 10,00, então ficaria 1,10 porcento a margem 
  Txnumedit_Custo.Text:=(um)div (dois); 
end;
João, seu problema é um só: você está tentando fazer operações matemáticas com variáveis tipo texto e não numéricas. Não vai resolver 100% sua questão, mas resolve este que você postou:
TFrm_Produtos.Txnumedit_aprazoExit(Sender: TObject); 
var 
  um, dois: Double; 
begin 
  um := StrToFloat(Txnumedit_aprazo.Text);
  dois := 1 + StrToFloatDef(TEdit_Margem.Text, 0);
  Txnumedit_Custo.Text := FormatFloat('#0.00', um /dois); 
end;

Considerações:

- StrToFloat fará a conversão do texto digitado para um número de ponto flutuante. Entretanto, vale observar que a conversão ocorre corretamente quando você tem no texto o "." como separador de decimal e não a ",". Há outros posts que falam a respeito de como contornar isto;

- StrToFloatDef faz exatamente a mesma coisa que StrToFlat, com a diferença que se a conversão não puder ser realizada (texto nulo ou inválido) será retornado o valor passado no 2º parâmetro;

- FormatFloat converte um número para um string (texto) no formato definido no 1º parâmetro. Observe que se for necessário apresentar o separador de milhar, você deverá mudar a máscara para '#,##0.00' (ele usa a notação americana). As posições onde coloquei os "0", aparecerão no texto final, mesmo que você passe um valor como 0.2, o resultado será "0,20". Se precisar que apareça o símbolo da moeda, é só acrescentá-la a máscara: 'R$ #,##0.00';

- Em uma divisão como a que você está fazendo, deve ser utilizado a "/" para divisão com resultado fracionário. O Div é utilizado para divisões de inteiros, o que não cabe ao seu caso.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Muito obrigado Micheus, segui o seu exemplo e deu exatamente como eu queria, o único problema é que o Tedit_margem está no Frm_Configuracoes, aí só calculava o valor da margem se eu abrir e fechar o Frm_Configuracoes antes, então eu adicionei esta linha, pode ser desta maneira ou tem outra mais prática ?

procedure TFrm_Produtos.Txnumedit_aprazoExitExit(Sender: TObject);

var

um, dois: Double;

begin

Frm_Configuracoes.Atualiza;

um := StrToFloat(Txnumedit_aprazo.Text);

dois:= StrToFloatDef(Frm_Configuracoes.TEdit_Margem.Text,0) /100 + 1;

Txnumedit_Custo.Text := FormatFloat('#0.00', um /dois);

end;

Muito Obrigado!!!

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