Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как посчитать возраст человека

Delphi , Синтаксис , Дата и Время



Автор: http://www.swissdelphicenter.ch

function CalculateAge(Birthday, CurrentDate: TDate): Integer;
var
  Month, Day, Year, CurrentYear, CurrentMonth, CurrentDay: Word;
begin
  DecodeDate(Birthday, Year, Month, Day);
  DecodeDate(CurrentDate, CurrentYear, CurrentMonth, CurrentDay);

  if (Year = CurrentYear) and (Month = CurrentMonth) and (Day = CurrentDay) then
  begin
    Result := 0;
  end
  else
  begin
    Result := CurrentYear - Year;
    if (Month > CurrentMonth) then
      Dec(Result)
    else
    begin
      if Month = CurrentMonth then
        if (Day > CurrentDay) then
          Dec(Result);
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := Format('Your age is %d',
    [CalculateAge(StrToDate('01.01.1903'), Date)]);
end;

Перевод контента на русский язык:

Код, предоставленный ниже, это функция Delphi, которая рассчитывает возраст человека на основе его даты рождения и текущей даты. Вот шаг за шагом, как она работает:

  1. Функция CalculateAge принимает два параметра: Birthday (тип TDate) - дата рождения человека, и CurrentDate (также тип TDate) - текущая дата.
  2. Она использует функцию DecodeDate для извлечения года, месяца и дня из обеих дат.
  3. Если дата рождения находится на или до текущей даты, она рассчитывает возраст, вычитав год рождения из текущего года. Это обеспечивает точность расчета возраста даже если дата рождения еще не наступила в этом году.
  4. Однако, если дата рождения после текущей даты (то есть она еще не произошла в этом году), она уменьшает возраст для учёта того, что человек еще не отметил свой день рождения в этом году.
  5. Процедура Button1Click в модуле TForm1 вызывает функцию CalculateAge с жестко закодированной датой рождения ('01.01.1903') и текущей датой, а затем отображает рассчитанный возраст на контроле Label.

Некоторые предложения по улучшению:

  • Вместо жесткого кодирования даты рождения '01.01.1903' в процедуре Button1Click, рассмотрите возможность позволить пользователю вводить свою собственную дату рождения.
  • Рассмотрите добавление обработки ошибок для обработки недопустимых или неоконченных дат, передаваемых функции CalculateAge.
  • Код предполагает, что дата рождения находится на или до текущей даты. Если это не гарантировано (например, если пользователь вводит недопустимую дату), вам может потребоваться добавление дополнительной логики для обработки этого случая.
  • Вместо использования переменных с именами месяцев и дней, рассмотрите возможность использования констант или enum для улучшения читаемости и поддерживаемости кода.
  • Код использует функцию Dec для уменьшения возраста. Рассмотрите возможность использования простой вычитания (Result := Result - 1) вместо этого, чтобы избежать перегрузки вызова внешней функции.

Вот обновленная версия кода, которая включает некоторые из этих предложений:

function CalculateAge(Birthday, CurrentDate: TDate): Integer;
var
  BirthYear, CurrentYear: Word;
begin
  BirthYear := YearOf(Birthday);
  CurrentYear := YearOf(CurrentDate);

  if BirthYear = CurrentYear then
    Result := 0
  else
  begin
    Result := CurrentYear - BirthYear;
    if (MonthOf(Birthday) > MonthOf(CurrentDate)) or
       ((MonthOf(Birthday) = MonthOf(CurrentDate)) and (DayOf(Birthday) > DayOf(CurrentDate))) then
      Result := Result - 1;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := Format('Ваш возраст %d', [CalculateAge(StrToDate(Edit1.Text), Date)]);
end;

Этот код использует константы для месяцев и дней, позволяет пользователю вводить свою собственную дату рождения с помощью контрола Edit, а также упрощает расчет возраста.

В статье описывается алгоритм расчета возраста человека с помощью программирования на языке Delphi, который учитывает месяц и день рождения для более точного определения возраста.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Дата и Время ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 15:12:28/0.0034101009368896/0