Guest - Iniciante - Postado Outubro 17, 2005 Denunciar Share Postado Outubro 17, 2005 Olá pessoal Sou iniciante em Delphi e tenho uma duvida, tenho tres comp. dbedit e gostaria de poder multiplicar o primeiro pelo segundo e o terceiro já receber o valor, alghuem pode me ajudar? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Outubro 17, 2005 Denunciar Share Postado Outubro 17, 2005 ae brotherfaz tipo assimdeclara 2 variáveis do tipo Real... exemplovarm1, m2: Real;ai você fazm1 := StrtoFloat(Dbedit1.text);m2 := StrtoFloat(Dbedit2.text);Dbedit3.text := FloattoStr(m1 * m2);só que assim, na conversão de strtofloat não é aceito caracteres que não sejam números, se houver letras por exemplo vai dar exception tipo'Bla' is not a valid float abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest - Iniciante - Postado Outubro 17, 2005 Denunciar Share Postado Outubro 17, 2005 Era isso mesmo que eu estava procurando, valeu a dica Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 GameOver Postado Março 13, 2007 Denunciar Share Postado Março 13, 2007 olá como eu faço pra multiplicar um campo do tipo "Time" por outro do tipo "$"uso D5 e ParadoxValeu!!!!!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Março 14, 2007 Denunciar Share Postado Março 14, 2007 declara 2 variáveis do tipo Real... exemplovarm1, m2: Real;ai você fazm1 := StrtoFloat(Dbedit1.text);m2 := StrtoFloat(Dbedit2.text);Dbedit3.text := FloattoStr(m1 * m2);só que assim, na conversão de strtofloat não é aceito caracteres que não sejam números, se houver letras por exemplo vai dar exception tipo'Bla' is not a valid float abraçosChurc, permita-me uma observação, veja se não não entendi errado seu comentário e estarei falando besteira. Também tem a questão da pontuação utilizada na formatação "," e "." (tipo 2.560,00).Se for utilizado o campo associado aos DBEdit's este tipo de problema não acontece. Aliás, eu particularmente, não costumo utilizar este método (DBEdit.Text) para manipular os dados digitados - sempre utilizo o campo do dataset.Assim, supondo que o dataset (ligado no datasource vinculado ao DBEdit) chama-se TableProduto, e os campos em DBEdit1, DBEdit2 e DBEdit3 são respectivamente QTD, VALOR e TOTAL, o exemplo que proporia é o seguinte: TableProdutoTOTAL.AsFloat := TableProdutoQTD.AsFloat *TableProdutoVALOR.AsFloat;Deve ser observado que o dataset deverá estar em edição ou inserção.olá como eu faço pra multiplicar um campo do tipo "Time" por outro do tipo "$"uso D5 e ParadoxObserve que a hora (seja em TTime ou TDateTime) é armazenada na parte fracionária de um Double. Então, você tem que ver que fração de tempo você quer multiplicar por $. Seria Horas, tipo 2,50 a hora; seria Minutos, tipo 0,70 o minuto?23:59:59.9999 corresponde a aproximadamente 0,9999999999...então, se você quer calcular valor por hora, você multiplica seu "time" por 24 e pelo valor da hora.Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 GameOver Postado Março 14, 2007 Denunciar Share Postado Março 14, 2007 (editado) Olá caro Micheus por gentileza veja se você pode me ajudar, já li exatemente 985 tópicos em 3 fóruns e não consegui sair do lugar, meu problema é o seguinte:Tenho uma tabela Paradox que tem os seguintes campos:Campo Tipo HoraSaída Time | O valor neste campo eu carrego assim DM.tblOSHoraSaida.value := time;HoraChegada Time | Aqui idemTotalHoras Time |Aqui recebe adiferença dos dois campos anterioresPrecoHora $ |Aqui vem atráves de outra tabela "Tabela de preços" PrecoTotal $então eu cobro pelo meu serviço R$9,00 a hora mas com um valor minimo de 2 horas ou seja mesmo que o serviço leve 1 hora pra ser executado será computado o valor de duas horas.o que eu preciso é multiplicar o campo "TotalHoras" pelo campo "PrecoHora" e mandar o resultado pro Campo "PrecoTotal" lembrando que o valor minimo é de duas horas. Será que fui claro?Talvez seja o caso de usar uma função?se puder me ajudar ficaria muito agradecido.att. MarcoValeu!!!!!!!!!!!!! Editado Março 14, 2007 por GameOver Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Março 14, 2007 Denunciar Share Postado Março 14, 2007 Olá caro Micheus por gentileza veja se você pode me ajudar, já li exatemente 985 tópicos em 3 fóruns e não consegui sair do lugar, meu problema é o seguinte:Tenho uma tabela Paradox que tem os seguintes campos:Campo Tipo HoraSaída Time | O valor neste campo eu carrego assim DM.tblOSHoraSaida.value := time;HoraChegada Time | Aqui idemTotalHoras Time |Aqui recebe adiferença dos dois campos anterioresPrecoHora $ |Aqui vem atráves de outra tabela "Tabela de preços" PrecoTotal $então eu cobro pelo meu serviço R$9,00 a hora mas com um valor minimo de 2 horas ou seja mesmo que o serviço leve 1 hora pra ser executado será computado o valor de duas horas.o que eu preciso é multiplicar o campo "TotalHoras" pelo campo "PrecoHora" e mandar o resultado pro Campo "PrecoTotal" lembrando que o valor minimo é de duas horas. Será que fui claro?Talvez seja o caso de usar uma função?se puder me ajudar ficaria muito agradecido.att. MarcoValeu!!!!!!!!!!!!!var TotHoras :TTime; begin TotHoras := (HoraSaída -HoraChegada) *24; // transformando em horas a parte inteira conf. expliquei antes if TotHoras < 2 then // aqui força que o mínimo seja 02:00 horas TotHoras := 2; PrecoTotal := TotHoras *PrecoHora; end;Observe que não está havendo arredondamento, ou seja, estamos utilizando a fração minutos e segundos para o cálculo do valor final.Acho que seria isto, verifique.Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 GameOver Postado Março 14, 2007 Denunciar Share Postado Março 14, 2007 Olá Micheusestá dando estes erros nas linhas 4 e 7var TotHoras :TTime; begin TotHoras := (HoraSaída -HoraChegada) *24; Operator not applicable to this operand type if TotHoras < 2 then // aqui força que o mínimo seja 02:00 horas TotHoras := 2; PrecoTotal := TotHoras *PrecoHora; Operator not applicable to this operand type end;o que pode ser? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Março 15, 2007 Denunciar Share Postado Março 15, 2007 Olá Micheusestá dando estes erros nas linhas 4 e 7var TotHoras :TTime; begin TotHoras := (HoraSaída -HoraChegada) *24; Operator not applicable to this operand type if TotHoras < 2 then // aqui força que o mínimo seja 02:00 horas TotHoras := 2; PrecoTotal := TotHoras *PrecoHora; Operator not applicable to this operand type end; o que pode ser?Inicialmente houve uma mancada minha, porque não dá para utilizar identificador com o nome acentuado - observe que escrevi HoraSaída e não HoraSaida. Fora isso, não sei que outro problema poderia haver, já que testando aqui no D3, o código da seguinte forma está compilando sem problemas:procedure TForm1.Button2Click(Sender: TObject); var HoraSaida, HoraChegada, TotHoras :TTime; PrecoHora, PrecoTotal :Double; begin TotHoras := (HoraSaida -HoraChegada) *24; if TotHoras < 2 then // aqui força que o mínimo seja 02:00 horas TotHoras := 2; PrecoTotal := TotHoras *PrecoHora; end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 GameOver Postado Março 15, 2007 Denunciar Share Postado Março 15, 2007 Olá Micheusdeste jeito compila mas não acontece nadaprocedure TForm1.Button2Click(Sender: TObject); var HoraSaida, HoraChegada, TotHoras :TTime; PrecoHora, PrecoTotal :Double; begin TotHoras := (HoraSaida -HoraChegada) *24; if TotHoras < 2 then // aqui força que o mínimo seja 02:00 horas TotHoras := 2; PrecoTotal := TotHoras *PrecoHora; end;não dá o resultado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Março 15, 2007 Denunciar Share Postado Março 15, 2007 Olá Micheusdeste jeito compila mas não acontece nadaprocedure TForm1.Button2Click(Sender: TObject); var HoraSaida, HoraChegada, TotHoras :TTime; PrecoHora, PrecoTotal :Double; begin TotHoras := (HoraSaida -HoraChegada) *24; if TotHoras < 2 then // aqui força que o mínimo seja 02:00 horas TotHoras := 2; PrecoTotal := TotHoras *PrecoHora; end;não dá o resultadoAmigo, isto é apenas um exemplo. É evidente que você não pode declarar as variáveis locais, como eu fiz, sem que atribua alguma coisa a elas. Fiz assim apenas para demonstrar que havia apenas um erro e que deveria compilar a parte utilizada nos cálculos.Voce mencionou anteriormente a existência destas variáveis, logo você deve utilizar essas que você já tinha e não as que eu coloquei no exemplo. Se voltar a dar erro, então verifique se os tipos das variáveis, que você citou no post anterior, equivalem aos que eu declarei localmente neste último exemplo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Março 15, 2007 Denunciar Share Postado Março 15, 2007 Churc, permita-me uma observação, veja se não não entendi errado seu comentário e estarei falando besteira. Também tem a questão da pontuação utilizada na formatação "," e "." (tipo 2.560,00).OpaSem dúvidas Micheus, você está certo, eu como não mexo com banco de dadosnão levei em consideração isto rsrabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest - Iniciante -
Olá pessoal
Sou iniciante em Delphi e tenho uma duvida, tenho tres comp. dbedit e gostaria de poder multiplicar o primeiro pelo segundo e o terceiro já receber o valor, alghuem pode me ajudar?
Link para o comentário
Compartilhar em outros sites
11 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.