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