Dann ersetz doch einfach mal TDate durch TDateTime
Jajn. Im Endeffekt egal, der Fehler lag aber nicht weil Default TDate war, sondern weil bei TryStrToDate
function TryStrToDate(const S: string; out Value: TDateTime): Boolean;
Value TDateTime sein muss (in der Funktion von TE Result). Default kann auch TDate bleiben (ist letztendlich TDateTime mit 0:00 Uhr). Und da in der Funktion vom TE Result TDate war, statt TDateTime, kam auch die Meldung.