Antes de nada gracias a todos por vuestros comentarios
Por partes:
delphi.com.ar
He puesto los exit porque antes lo tenía todo con if-else y era múchísimo más grande y lioso, a mi entender, y en un caso como este no creo que sea un mal uso, y eso que a mi tampoco me gusta emplearlos.
Creo que es buena idea lo de hacer las transformaciones una única vez, al principio y luego usar directamente esos valores.
Ñuño Martínez
En el caso que pones no estás considerando las fechas nulas, que siempre deben ignorarse de la lógica de las comparaciones, por lo que ese sistema no me sirve en este caso concreto.
Quizá usar result una única vez sea lo mejor (lo tenía así al principio y en su lugar usaba una variable temporal).
Mick
Igualmente no estás considerando las fechas nulas que darían falsos negativos.
Y creo que definitivamente voy a hacer las transformaciones a "TDate" al principio.