Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #11  
Antiguo 05-10-2023
Badillo Badillo is offline
Miembro
 
Registrado: jun 2021
Posts: 33
Poder: 0
Badillo Va por buen camino
Necesito me aclaren que estoy haciendo mal

Gracias por al ayuda, esta muy buena la clase que propuso ecfisa, pero no logro que me funcione como necesito, quizas es que estoy haciendo algo mal o omitiendo algo, pudieran ayudarme.

Básicamente lo que necesito es que en lo que se va procesando el procedmiento ProcessFile, me actualice los contadores en pantalla (Label0000 hasta Label2110), pero no lo hace, solo cuando hago clic en el label para detener el hilo es que se ejecuta todo. de lo contrario nunca termina y le tengo puesto a la clase F835File la propiedad EndParse que inicia en falso y cuando termina el proceso toma el valor verdadero, para poder tener referencia que terminó el proceso. La duración de este proceso depende del tamaño del fichero que estoy procesando y me ha durado entre 30seg hasta 2 minutos en los casos que tengo como refrencia.

Código:
procedure TForm1.TimeThreadOnTime;
begin
  // aquí el proceso que desees
  Inc(FCont);
  if FStopThread = false then
  begin
    FStopThread := true;
    ProcessFile;
  end;

  Label0000.Caption := IntToStr(F835File.Loop0000MaxId);
  Label1000.Caption := IntToStr(F835File.Loop1000MaxId);
  Label2000.Caption := IntToStr(F835File.Loop2000MaxId);
  Label2100.Caption := IntToStr(F835File.Loop2100MaxId);
  Label2105.Caption := IntToStr(F835File.Loop2105MaxId);
  Label2110.Caption := IntToStr(F835File.Loop2110MaxId);

  // fin proceso
  Application.ProcessMessages;
  
  if F835File.EndParse then StopThread;

end;

procedure TForm1.ProcessFile;
begin
  if FileExists(FFileName) then
  begin
    F835File.Parse;
    if F835File <> nil then
    begin
        LabelLoop0000.Caption := IntToStr(F835File.Loop0000MaxId);
        LabelLoop1000.Caption := IntToStr(F835File.Loop1000MaxId);
        LabelLoop2000.Caption := IntToStr(F835File.Loop2000MaxId);
        LabelLoop2100.Caption := IntToStr(F835File.Loop2100MaxId);
        LabelLoop2105.Caption := IntToStr(F835File.Loop2105MaxId);
        LabelLoop2110.Caption := IntToStr(F835File.Loop2110MaxId);
        scMemoSchema.Lines.AddStrings(F835File.getSqlSchema);
        scMemoDelete.Lines.AddStrings(F835File.getSqlDelete);
        scMemoInsert.Lines.AddStrings(F835File.SqlData);
        scMemoFileParser.Lines.AddStrings(F835File.ParsedFile);
        scMemoLogError.Lines.AddStrings(F835File.LogError);
    end;
  end;
end;

procedure TForm1.BeginThread;
begin
  if not Assigned(TimeThread) then
  begin
    FCont := 1;
    TimeThread:= TTimeThread.Create;
    // Intervalo expresado: 1/1000000 seg. (µs)
    TimeThread.Interval := 100000; {1/10 seg }
    TimeThread.OnTime   := TimeThreadOnTime;
    TimeThread.Execute;
  end;
end;

procedure TForm1.StopThread;
begin
  if Assigned(TimeThread) then
    TimeThread.Terminate;
end;

procedure TForm1.scLabel21Click(Sender: TObject);
begin
  StopThread;
end;
Una vez más gracias y aguardo por su ayuda.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Timer coso Trucos 1 14-07-2008 10:28:56
Timer comba OOP 3 18-06-2007 16:54:00
Timer nenufer Varios 7 10-05-2006 16:35:17
Timer ojimenezg2000 Gráficos 10 27-04-2006 14:56:02
timer +1 slim jim Varios 4 02-10-2005 04:03:11


La franja horaria es GMT +2. Ahora son las 18:35:56.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi