StrToDate lanzará una excepción en caso de que la cadena no represente una fecha válida así que más bien podrías manejar la excepción para determinar si es o no correcta. Por ejemplo, esta función
Código Delphi
[-]
function IsValidDate(S: String): Boolean;
var
Date: TDate;
begin
Result := true;
try
Date := StrToDate(S);
except
on EConvertError do
Result := false;
end;
end;
Sin embargo toma en cuenta que una misma cadena dada puede ser o no una fecha válida dependiendo de la configuración regional del sistema; específicamente de las variables globales DateSeparator y ShortDateFormat.
// Saludos