Si quieres optimizar el código para menor uso de procesador, yo evitaría convertir un string a un TDate para cada comparación. O a lo sumo excluír en en las primeras líneas las comparaciones que serán mas comunes!
Por otro lado, líneas como esta:
Código Delphi
[-]
result := StrToDate(fecha_creacion.Text)<=StrToDate(fecha_aprobacion.Text);
if (result=FALSE) then
exit;
no es lo mismo que esto? :
Código Delphi
[-]
if not StrToDate(fecha_creacion.Text)<=StrToDate(fecha_aprobacion.Text) then
exit;
Yo personalmente prefiero evitar los Exit intentando que la lógica te lleve a la salida
Saludos!