News & Events
Ano Bissexto
- 12 de abril de 2007
- Posted by: Adriano Santos
- Category: ano_bissesto delphi dicas função function procedimento procedure
Em diversos sistemas, uma das principais preocupações do desenvolvedor é identificar se o ano é ou não bissexto. A explicação varia de acordo com cada sistema, mas um dos principais motivos é justamente para efetuar cálculos diversos, tais como: juros, mora, etc.
Nesse artigo você aprende a criar, de maneira bastante simples, funções que efetuam os cálculos necessários para descobrir se o ano é bissexto. Insira os métodos em sua classe ou unit de funções padrão e use sempre em seus sistemas.
Os métodos abaixo dispensam explicações mais detalhadas. Apenas escreva-as em suas units e passe a utilizá-las.
//Novo tipo de dados, TData TData = class Mes, Dia, Ano: Integer; procedure DefVal(m, d, a: Integer); function AnoBis: Boolean; Declare uma nova variável global. var Form1: TForm1; //novo objeto "global" da classe TData UmDia: TData;
Abaixo o código da procedure DefVal e da function AnoBis.
procedure TData.DefVal(m, d, a: Integer); begin Mes := m; Dia := d; Ano := a; end; function TData.AnoBis: Boolean; begin if (Ano mod 4 <> 0) then AnoBis := False else if (Ano mod 100 <> 0) then AnoBis := True else if (Ano mod 400 <> 0) then AnoBis := False else AnoBis := True; end;
Siga autor @asrsantos no Twitter agora e fique por dentro de todas as atualizações do blog.
Crie e destrua a variável global no onCreate e onDestroy do form:
procedure TForm1.FormCreate(Sender: TObject); begin UmDia := TData.Create; end; procedure TForm1.FormDestroy(Sender: TObject); begin UmDia.Free; end;
Por fim teste as funções incluindo dois botões na tela. Um para cada ano que deseja testar:
procedure TForm1.Btn1997Click(Sender: TObject); begin UmDia.DefVal (1, 1, 1997); if UmDia.AnoBis then ShowMessage ('Ano Bissexto') else ShowMessage ('Ano Não Bissexto'); end; procedure TForm1.Btn1996Click(Sender: TObject); begin UmDia.DefVal (1, 1, 1996); if UmDia.AnoBis then ShowMessage ('Ano Bissexto') else ShowMessage ('Ano Não Bissexto'); end;
Siga o @tdevrocks no Twitter agora e fique por dentro de todas as atualizações do blog.
Author: Adriano Santos
3 Comentários
Comments are closed.
Olá Adriano parabéns pelo Blog.
Ache interessante o esquema de mostrar ano bissesto, mas muito trabalhoso. Quando presiso utilizo a seguinte função.
function Bissesto(Ano:String):boolean;
begin
try
StrToDateTime(’29/02/’+Ano);
Result := True;
except
Result := False;
end;
end;
Muito boa a dica Cristiano, vlw e apareça sempre que puder. Abs
que tal usar a função IsLeapYear
Date Utils 😀
Abraços
Renato