Quick Tips: Data no Delphi - Parte I - Cálculos de datas

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (2)  (0)

Nesta dica iremos ver cálculos de datas no Delphi.

Olá pessoal nesta Quick iremos ver cálculos de datas no Delphi.

 

                É muito comum ocorrer situações em que o programador necessita desenvolver programas que efetuem cálculos com data. Assim sendo, serão apresentados neste artigo alguns exemplos de utilização desses conceitos.

 

Cálculo com Data

 

                Para exemplificar a utilização do cálculo com datas, serão apresentados em seguida dois exemplos de programas, um que efetuará o cálculo da idade de um indivíduo e o segundo que efetuará o cálculo de uma prestação de um título a ser pago.

 

Primeiro exemplo

 

                Considere o programa seguinte que solicita a data de nascimento de uma pessoa e em seguida apresenta a idade da pessoa em anos.

                A figura a seguir mostra o formato que deve possuir o formulário com a definição dos elementos visuais.

 



Coloque o seguinte código no botão processar:

 

procedure TfrmIdade.Button1Click(Sender: TObject);

var

ATUAL, NASC: TDateTime;

ANOS: Real;

begin

NASC:=StrToDate(Edit1.Text);

ATUAL:=Date;

ANOS:=Int((ATUAL - NASC) / 365.25);

label3.caption:=FormatFloat('0', ANOS);

end;

 

                Observe no código anterior a utilização do tipo de dado TDateTime, que tem por finalidade representar valores numéricos para a definição de tempo de calendário(Data) e tempo de horário.

 

                No programa anterior o programa transfere para a variável NASC o valor da data informada no campo EDIT1.text por meio da função StrToDate. Em seguida a variável ATUAL é carregada com o valor da data atual por meio da função Date. Depois a variável ANOS recebe o valor inteiro (por intermédio da função Int) da diferença dos valores entre as variáveis ATUAL e NASC que são divididos pelo valor 365.26 (um ano possui 356 dias e 6 horas, que corresponde ao coeficiente 365.25).

 

Segundo Exemplo

 

                Considere o seguinte programa de caixa para um sistema de contas a receber. Este programa deve ser informado a data de vencimento de um título e do seu valor nominal para poder executar uma das seguintes ações:

 

·         Se a data de pagamento do título é igual à data de vencimento, o valor a ser pago será o próprio valor nominal informado;

·          Se a data de pagamento do título for maior que a data de vencimento, o valor a ser pago deve ser acrescido de uma de 1% ao dia;

·          Se a data de pagamento do título for menor que a data de vencimento, o valor a ser pago deve ser decrescido de um desconto de 5%.

 

                Para efetuar o cálculo de cobrança de multa do título vencido, será utilizada a fórmula:

COBRAR:=VALOR +(VALOR * 0.10 * TEMPO), em que o VALOR é o valor nominal do título, 0.01

é a taxa de multa e TEMPO é a diferença existente entre a data de pagamento e a data de vencimento em meses.

 

                Para efetuar o cálculo do desconto, será utilizada a fórmula: COBRAR :=VALOR –(VALOR *

0.05), em que VALOR é o valor nominal do título e 0.05 é a taxa de desconto.

 

Monte o seu formulário de acordo com o seguir:

 



Após concluir a montagem do formulário, serão dadas as instruções para a montagem do programa, no botão processar coloque o seguinte código:

 

procedure TForm2.btnProcessarClick(Sender: TObject);

var

VALOR, TEMPO, COBRAR: Real;

VENCTO, PAGTO:TDateTime;

begin

DateSeparator:='/';

ShortDateFormat:='dd/mm/yyyy';

ThousandSeparator:='.';

VALOR:=StrToFloat(edit1.Text);

VENCTO := StrToDate(Edit2.Text);

PAGTO:=StrToDate(Edit3.Text);

if (PAGTO = VENCTO) then

COBRAR:= VALOR

else

if (PAGTO > VENCTO) then

begin

TEMPO:=PAGTO - VENCTO;

COBRAR :=VALOR + (VALOR * 0.01 * TEMPO);

end

else

COBRAR:=VALOR - (VALOR * 0.05);

label4.Caption:=FormatFloat('#,##0.00',COBRAR);

Edit1.SetFocus;

end;

Vou ficando por aqui, na próxima continuaremos trabalhando com Data no Delphi

Um abraço

Rubens Antunes

Leia todos artigos da série

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?