Array
(
)

numero de dias de um mes

Roberto Rossi
   - 24 nov 2005

Preciso de uma funcao para retornar o número de dias de um mês. Tente a função abaixo mas dá erro:

function DiasNoMes(AYear, AMonth: Integer): Integer;
const
DaysInMonth: array[1..12] of Integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
begin
if AMonth = 2 then
begin
if Ayear mod 4 = 0 then
begin
Inc(DaysInMonth[AMonth]); /////dá erro aqui /////
end;
end;
Result := DaysInMonth[AMonth];
end;


Edilcimar
   - 24 nov 2005

vc não tem que criar a função que já existe daysinmonth, ela por si só já retorna a quantidade de dias do mês, você está tentando atribuir 31 dias para uma mês que pode não ter 31


Massuda
   - 24 nov 2005

Talvez uma abordagem diferente evite reinventar a roda... na unit SysUtils existe um array com os dias do mês chamado MonthDays e uma função para testar se um ano é bissexto chamada IsLeapYear. Assim sua função ficaria assim...#Código

function DiasNoMes(AYear, AMonth: Integer): Integer; 
begin
result := MonthDays[IsLeapYear(AYear), AMonth];
end;
...ou simplesmente nem use a função.