¿Cómo puedo evitar la incapacidad de Delphi para manejar con precisión las manipulaciones de fecha y hora?

Soy nuevo en Delphi (programado desde hace 6 meses). Hasta ahora, ha sido una experiencia extremadamente frustrante, la mayor parte proviniendo de lo mal que está Delphi en el manejo de fechas y horarios. Tal vez creo que es malo porque no sé cómo usar TDate y TTime correctamente, no lo sé. Esto es lo que me está pasando ahora mismo:

// This shows 570, as expected
ShowMessage(IntToStr(MinutesBetween(StrToTime('8:00'), StrToTime('17:30'))));

// Here I would expect 630, but instead 629 is displayed. WTF!?
ShowMessage(IntToStr(MinutesBetween(StrToTime('7:00'), StrToTime('17:30'))));

Ese no es el código exacto que uso, todo está en variables y se usa en otro contexto, pero creo que puedes ver el problema. ¿Por qué está mal ese cálculo? ¿Cómo se supone que debo solucionar este problema?

Respuestas a la pregunta(2)

Su respuesta a la pregunta