Ver Mensaje Individual
  #6  
Antiguo 21-02-2005
[Nbull] Nbull is offline
Miembro Premium
 
Registrado: nov 2004
Ubicación: Valencia-España
Posts: 168
Reputación: 20
Nbull Va por buen camino
Sigo sin hacerle funcionar

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
//Leo de Config.ini la Hora y los Minutos
 
//Hora que comienza la llamada al modem
 ahora := now;
 medianoche := ahora;
 medianoche := RecodeTime(medianoche,Hora,Minutos,00,999); // a la fecha actual, 
//le cambio la hora
faltanMilisegundos := MillisecondsBetween(ahora, medianoche);
timer1.Interval := faltanMilisegundos;
timer1.enabled := true;
{Calculo el tiempo que falta para cortar los procesos}
  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); // a la fecha actual,
// le cambio la hora
  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
//Desactivo el timer que se ejecuta a la hora que le digo
  Timer1.Enabled:=false;
//Activo el timer que me acaba los procesos a los dos minutos
  TimerEstablecido.Enabled:=true;
//Aquí mis procesos...

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;
//Leo los datos del archivo Config.Ini
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;
//Hora que comienza los procesos
 ahora1 := now;
 medianoche1 := ahora1;
 medianoche1 := RecodeTime(medianoche1,Hora,Minutos,00,999); // a la fecha actual, 
//le cambio la hora
faltanMilisegundos1:= MillisecondsBetween(ahora1, medianoche1);
timerConexion1.Interval := faltanMilisegundos1;
timerConexion1.enabled:= true;
{Calculo el tiempo que falta para cortar la llamada}
  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); // a la fecha actual, 
//le cambio la hora
  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.
Responder Con Cita