Directamente trabaja con las rutinas que tienes en la unidad DateUtils de Delphi.
Al menos en delphi 6 tienes:
Código Delphi
[-]
HoursBetween(AThen, ANow:TdateTime);
SecondsBetween(AThen, ANow:TdateTime);
MinutesBetween(AThen, ANow:TdateTime);
MillisecondsBetween(AThen, ANow:TdateTime);
DaysBetween(AThen, ANow:TdateTime);
y un largo etc.
Básicamente lo pasas todo a segundos o milisegundos, algo así:
Código Delphi
[-]
function HorasEntre(Antes, Ahora:TdateTime):string;
var totalSegword;
begin
totalSeg := secondsBetween(antes,ahora);
result := format ('%d : %d :%d',
[totalseg div (3600),
totalseg div (60),
totalseg mod (60)]);
end;
He separado el carácter 2 puntos, porque creo recordar que interfiere con la función format, ya sería cosa de mirarlo con más detalle.
Consejo: Nunca trabajes con Times, siempre con TdateTime, (por lo que comentas del cambio de fecha).
saludos