Perdonar que reabra el Hilo,pero, es que tengo un pequeño problema con los timer.
He colocado dos timer en mi aplicación uno para que me haga una serie de cosas a la hora que le indique el usuario todos los dias, es decir, todos los dias a las 5 de la tarde que haga x cosas y otro para que a los dos minutos me cierre esos procesos. Para eso tengo el siguiente codigo :
Código Delphi
[-]
procedure TForm1.FormCreate(Sender: TObject);
var
ahora, mediaNoche,empieza, cortar: Tdatetime;
faltanMilisegundos,faltanMiliseg : int64;
tiempoes,min : Word;
begin
ahora := now;
medianoche := ahora;
medianoche := RecodeTime(medianoche,Hora,Minutos,00,999); faltanMilisegundos := MillisecondsBetween(ahora, medianoche);
timer1.Interval := faltanMilisegundos;
timer1.enabled := true;
empieza := now;
cortar := empieza;
Tiempoes := Testablecido;
min :=tiempoes + minutos;
If(min>=60)then
begin
min:=min-60;
end;
cortar := RecodeTime(cortar,Hora,min,00,000); faltanMiliseg:= MillisecondsBetween(empieza, cortar);
TimerEstablecido.Interval := faltanMiliseg;
end;
Y en el pimer timer tengo lo siguiente:
Código Delphi
[-]
procedure TForm1.Timer1Timer(Sender: TObject);
var
Str:string;
begin
Timer1.Enabled:=false;
TimerEstablecido.Enabled:=true;
En el segundo timer:
Código Delphi
[-]
procedure TForm1.TimerEstablecidoTimer(Sender: TObject);
var
ahora1, mediaNoche1,empieza1, cortar1: Tdatetime;
faltanMilisegundos1,faltanMiliseg1 : int64;
tiempoes1,min1 : Word;
begin
TimerEstablecido.Enabled:=false;
getdir(0,SiniDir);
ArchivoIni:= Tinifile.Create(Sinidir+'\config.Ini');
Hora :=ArchivoIni.ReadInteger('Hora','H',0);
Minutos := ArchivoIni.ReadInteger('Minutos','Min',0);
Testablecido := ArchivoIni.ReadInteger('TiempoConexion','Conexion',1);
ArchivoIni.Free;
ahora1 := now;
medianoche1 := ahora1;
medianoche1 := RecodeTime(medianoche1,Hora,Minutos,00,999);
faltanMilisegundos1:= MillisecondsBetween(ahora1, medianoche1);
timerConexion1.Interval := faltanMilisegundos1;
timerConexion1.enabled:= true;
empieza1 := now;
cortar1 := empieza1;
Tiempoes1 := Testablecido;
min1 :=tiempoes1 + minutos;
If(min1>=60)then
begin
min1:=min1-60;
end;
cortar1 := RecodeTime(cortar1,Hora,min1,00,000); faltanMiliseg1:= MillisecondsBetween(empieza1, cortar1);
TimerEstablecido.Interval := faltanMiliseg1;
end;
En el segundo le digo que mañana a las 5 de la tarde o a la hora que sea se ejecuten otra vez los procesos,pero, la put... es que se me ejecutan a los 3 o cuatro minutos otra vez, no lo entiendo por que al iniciar mi aplicación todo funciona bien y hasta que no llega la hora que hay en el archivo config.ini no se ejecuta y es el mismo codigo.
Ha ver si veis algo que este mal y como lo puedo solucionar.Yo lo que quiero es que todos los dias a la misma hora me haga lo mismo.
PD:El Pc estara encendido y mi programa ejecutandose.No quiero usar el administrador de tareas de Windows.
Gracias por vuestro tiempo. Un saludo.