una forma que se me ocurre es la siguiente, aunque no me gusta. Si alguien sabe alguna otra forma de hacerlo le agradeceria que me echara una mano. salu2
function DiaSemana(fecha:TFecha):WORD;
VAR
y,m,d,ds:word;
begin
getdate(y,m,d,ds);
setdate(fecha.anyo,fecha.mes,fecha.dia);
getdate(fecha.anyo,fecha.mes,fecha.dia,ds);
setdate(y,m,d);
DiaSemana:=ds;
end;
{ ds -> 0=Domingo .... 6=Sabado }
No hay una formula simple para calcular el dia de la semana de una fecha dada debido a lo complejo que es nuestro sistema calendario. Para empezar debes tomar una fecha base de la cual sepas qué dia de la semana fue (o será o es), luego contar cuantos dias hay entre esa fecha y la fecha de la cual quieres saber el dia de la semana teniendo en cuenta los años bisiestos, con ese dato debes calcular el modulo 7 de esa cantidad y dependiendo de qué dia base has tomado considerar ese dia como 0 (cero) y hacer la traslación correcta para que 1 sea Domingo y asi... como puedes ver tu método es mas seguro y mas corto que todo esto.
La solucion que expones tambien lo he pensado, pero es lo que dices, es mas laborioso y mas largo el algoritmo. Creo que utilizare el mio, controlando un poco cuando se acerca a medianoche, deberia funcionar "bien", aunque keda limitado por las fechas que el ordenador soporta.
salu2
No habia notado ese detalle que mencionas, es verdad, las PC no aceptan fechas anteriores al 1 de Enero de 1980... por si te es util el 1 de Enero de 1900 fue Lunes.