Mas o menos lo que he entendido:
// Globales
TDateTime HoraUltVuelco;
// double MaxRainRate;
double CalculaRainRate(const TDatoConsola DatoConsola)
{
double _15m=(double)TDateTime(0,15,0,0,0); // 15 minutos;
TDateTime HoraActual=DatoConsola->Hora;
// es que voy a la hora de la consola, por si estuviera en UTC;
double Lapso=(double)HoraActual-(double)HoraUltVuelco;
if (Lapso>_15m)
if (DatoConsola->Lluvia) { // Empieza un nuevo evento
HoraUltVuelco=HoraActual;
return DatoConsola->Lluvia/.25; //15min en horas
}
else return 0 // finaliza evento
else
if (DatoConsola->Lluvia)
HoraUltVuelco=HoraActual;
return DatoConsola->Lluvia/(Lapso*24.0); //TdateTime a Horas;
}
}