Ver Mensaje Individual
  #18  
Antiguo 27-02-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Otra cosita:

Yo todo eso lo encapsularía dentro de un TObject (una clase). De tal forma que al añadir un periodo de fechas, a la misma vez que pongo a true el índice del array incrementaría la cuenta de una variable privada "diasTrabajados", de esta forma no tendremos que recorrer todo el array para saber lo dias totales, es decir:
Código Delphi [-]

procedure anadir periodo(F1, F2:TDatetime);
  var indice, trabajados :integer;
begin
  trabajados := trunc (F2 -F1) ;
  indice := trunc(f1-Fini); 
// como el indice del array empieza en cero, restamos a todo Fini.
// Fini será la variable declarada anteriormente, será una global.

  for cont := indice to trabajados do
  begin
    if dias[cont-1] = false then inc(FDiasTrabajados);
    // si estaba a false, no estaba computado ese día
   // por tanto lo computamos ahora.

   // Si estaba a true, significa que es una fecha solapada con otro periodo
   // añadido anteriormente

    dias[cont-1] := true; // -1 porque empieza en cero el array, ¿recuerdas? 
  end;
end;

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 27-02-2007 a las 12:27:30.
Responder Con Cita