// Es wird das Alter in Jahren und Monaten ausgegeben

// Getestet mit D2010 unter W7

function AlterBeiGeburtstag(Zeitpunkt, Geburtstag: TDate): string; 
var 
  t1, t2, m1, m2, j1, j2: word; 
  jahre, monate, tage: integer; 
  s: string; 
begin 
  result := ''; 
  decodedate(Geburtstag, j1, m1, t1); 
  decodedate(Zeitpunkt, j2, m2, t2); 
  jahre := j2 - j1; 
  monate := m2 - m1; 
  tage := t2 - t1; 
  s := ''; 
  if tage < 0 then 
  begin 
    if tage > -10 then 
      s := 'fast ' 
    else 
      dec(monate);
  end; 
  if monate < 0 then 
  begin 
    dec(jahre); 
    inc(monate, 12); 
  end; 
  if jahre > 0 then 
  begin 
    result := result + inttostr(jahre) + ' Jahr'; 
    if jahre <> 1 then 
      result := result + 'e'; 
  end; 
  if monate > 0 then 
  begin 
    if jahre > 0 then 
      result := result + ' und ' + s; 
    result := result + inttostr(monate) + ' Monat'; 
    if monate <> 1 then 
      result := result + 'e'; 
  end 
  else if jahre = 0 then 
    result := result + 'einige Tage'; 
end; 
// Beiespiel
 
procedure TForm1.Button1Click(Sender: TObject); 
var 
  g, h, a: String; 
begin 
  g := '24.10.1948'; 
  h := '23.11.2016'; // bzw. "Datetostr(Date);" für heute 
  try 
    a := AlterBeiGeburtstag(StrToDate(h), StrToDate(g)); 
  except 
    ShowMessage('Falsche Datums-Angabe !'); 
    exit; 
  end; 
  ShowMessage('Am ' + h + ' ist das Alter ' + a); 
end;
 



Zugriffe seit 6.9.2001 auf Delphi-Ecke