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;