FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Detener el flujo del programa 'n' segundos
Posts: 1446
Joined: Mon Oct 10, 2005 02:38 PM
Detener el flujo del programa 'n' segundos
Posted: Tue Mar 28, 2017 08:25 PM

Pues eso, que no recuerdo como detener el flujo del programa 'n' segundos.

Muchas gracias,

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 817
Joined: Sun Jun 15, 2008 07:47 PM
Re: Detener el flujo del programa 'n' segundos
Posted: Tue Mar 28, 2017 08:30 PM

inkey( n )

______________________________________________________________________________

Sevilla - Andalucía
Posts: 1446
Joined: Mon Oct 10, 2005 02:38 PM
Re: Detener el flujo del programa 'n' segundos
Posted: Tue Mar 28, 2017 08:38 PM
xmanuel wrote:inkey( n )


Gracias Manu,

Ciertamente me valdrá porque no espero hacer nada, pero sé que había otra función que aunque detenía el flujo del programa, permitía que el sistema continuará con los eventos (por decirlo de alguna manera).

... estaba buscando mientras escribía ... creo que era HB_IDLESLEEP(1) !!!

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 1283
Joined: Fri Feb 10, 2006 02:34 PM
Re: Detener el flujo del programa 'n' segundos
Posted: Wed Mar 29, 2017 05:57 AM

Carlos -> SysWait( <n> )

Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
HIX -> https://github.com/carles9000/hix
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Detener el flujo del programa 'n' segundos
Posted: Wed Mar 29, 2017 07:15 AM
La funcion es original de alguien, de los tiempos de DOS, se llamaba sleep o similar, pero lleva modificaciones.
Vale para consola o fwh. La atencion a eventos es opcional, pasandole el parametro lSysRefresh
Funciona con un tiempo inicial.
Tiene una subcondicion, ademas del tiempo transcurrido, que permite salir antes de caducar el bucle.


Code (fw): Select all Collapse
#Define IsFw() .t.

FUNCTION MiSleep( nSeconds, nInitial, lSysRefresh,;
                bCondicionSalida; 
               )

  IF nInitial == NIL .OR. VALTYPE( nInitial ) != "N"
       nInitial := SECONDS()
  ENDIF

  if lSysRefresh == NIL
    lSysRefresh = IsFw()
  endif

  // correct for running at midnight
  IF nInitial + nSeconds > 86399
       nInitial -= 86399
     *  Wait until midnight
     DO WHILE SECONDS() > 100  // no problem with a _very_ slow machine
     ENDDO
  ENDIF

  // calculate final time

  nSeconds += ninitial

  // Loop until we are done

  DO WHILE ( SECONDS() < nSeconds )

     IF lSysRefresh        
        SysRefresh()
     ENDIF
     *
     
     IF bCondicionSalida != NIL .AND. Eval(bCondicionSalida)
        EXIT
     ENDIF
  ENDDO

  RETURN NIL

Continue the discussion