Ich dachte, nach so vielen Beiträgen wäre die vollständige Lösung schon dabei. Nun ja...
Vorausgesetzt, dass wirklich nach einer NET-Lösung gefragt wird, kann man direkt mit Monat und Tag vergleichen:
Code:
DateTime geburtstag = ...
DateTime vergleich = DateTime.Today();
int alter = vergleich.Year - geburtstag.Year;
// korrigieren, wenn im aktuellen Jahr noch kein Geburtstag war
if ( (geburtstag.Month > vergleich.Month)
|| (geburtstag.Month == vergleich.Month && geburtstag.Day > vergleich.Day) )
alter--;
(und das in Delphi zu schreiben statt in C#, überlasse ich Euch).
Das Ganze kann man natürlich auch mit mehrfachem Vergleich von IsLeapYear für Geburtstag und Heute machen; aber ich glaube, dieser Weg ist kürzer und einfacher.
Gruß Jürgen
PS. Sorry, ich stelle gerade fest, dass DeddyH in #4 und mkinzler in #7 dasselbe Verfahren meinten. Mein Beitrag dient also nur dazu, eine NET-Lösung zu schreiben und nicht nur zu skizzieren.