Yo propongo hacerlo al contrario, es decir, programar un Timer para la hora de almuerzo y olvidarte de chequear la hora cada dos por tres.
Cuando arranques el programa, miras la fecha actual y averiguas la fecha de almuerzo (con RecodeDateTime o funciones similar es fácil), ahora hallas los milisegundos que faltan para la hora de almuerzo (MillisecondsBetween(FechaHoraAlmuerzo, now)) y ese resultado se lo añades a un TTimer.Interval, conectas el Timer... y a esperar la hora del almuerzo

.
En el evento OnTimer, vuelves a programar el evento para la hora de salida y listo.
Todas las funciones comentadas están en la unidad DateUtils de Delphi.
Saludos