Ir al contenido


Foto

Como ejecuto un procedure siempre no por evento?


  • Por favor identifícate para responder
2 respuestas en este tema

#1 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 mensajes
  • LocationMéxico

Escrito 15 mayo 2013 - 01:48

Hola!

Rato que no pregunto nada pero siempre paso para ver que hay ne nuevo.

Pues mi pregunta es esa exactamente como dice el titulo del hilo. Necesito ejecutar siempre un procedure, no disparado por evento, ni por un timer, es una aplicacion windows donde solo se ingresan unos datos numericos y se muestran resultados de calculos, el procedure siempre debe de estar ejecutando, por decir algo:



delphi
  1. procedure TForm1.Calculando;
  2. begin
  3.   if (scrollbar1.position > StrToInt(edtArranque.Text )) then
  4.     begin
  5.           Shape1.Brush.Color := clRed;
  6.  
  7.     end;
  8.  
  9.   //AQUI mucho mas codigo.......
  10. end; 



Se agradecen las ideas y sugerencias como siempre  :)

Para los que son maestros !

(b) (b) (b) (b) (b) (b) (b) (b) (b)
  • 0

#2 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 15 mayo 2013 - 03:47

Te propongo estas técnicas:

1.- Un código que siempre se ejecuta se consigue con un bucle infinito. Claro que esto bloquea tu aplicación y puede que no sea lo que buscas.

2.- La otra forma es un thread, es decir un hilo de código que corre paralelo al hilo principal y no bloquea el prigrama. Para este caso puedes leer este minitutorial .

Básicamente:


delphi
  1. procedure ThreadProc
  2. begin
  3.   repeat 
  4.     .............
  5.   until condición;
  6. end 
  7.  
  8.  
  9. ......................
  10. // Poner en marcha el thread
  11. var
  12. hThread: THANDLE;
  13.  
  14. begin
  15.   Thread:= CreateThread(nil 0,  @ThreadProc, 0, 0, PDWORD(0)^);
  16. end;



3.- Otra forma de hacerlo es con la clase TThread de delphi.


Saludos.
  • 0

#3 sistesc

sistesc

    Member

  • Miembros
  • PipPip
  • 13 mensajes

Escrito 20 mayo 2013 - 08:45

Tambien podrias crear un servicio de Windows que se inicie en automatico con windows y que el servicio sea un ciclo o un timer.
  • 0




IP.Board spam blocked by CleanTalk.