TIMER

TIMER

Postby Mike Serra » Wed Nov 15, 2006 6:52 am

Buenos días foro:

Tengo 1 máquina con dos sesiones abiertas de MS-DOS, en una de ellas ejecuto el programa que a continuación os propongo, en la otra sesión genero el fichero que necesita la primera sesión. Bueno, pues el timer se vuelve loco. Espero haberme explicado correctamente:


// This sample shows how to call a function in an interval time.
#include "FiveWin.ch"
static oWnd
/----------------------------------------------------------------------------//
function Main()
local oTmr
DEFINE WINDOW oWnd TITLE "Checking File"
DEFINE TIMER oTmr INTERVAL 1 ACTION CheckFile(oTmr) OF oWnd
ACTIVATE TIMER oTmr
ACTIVATE WINDOW oWnd ICONIZED

return nil

//----------------------------------------------------------------------------//

function CheckFile(oTmr)

if file ("c:\pruebras.txt")
oTmr:Deactivate
waitrun("apertura.exe") <--Este programa no tarda nada en ejecutarse
ferase("C:\pruebas.txt")
oTmr:Activate
endif
return nil



//Como podeis observar este programa lo único que hace es estar observando si existe un fichero en un sitio determinado, bueno pues cuando existe no para de ejecutar <apertura.exe>[/b]
Mike Serra
 
Posts: 297
Joined: Fri Apr 14, 2006 5:52 pm
Location: Córdoba (España)

Postby Antonio Linares » Wed Nov 15, 2006 9:09 am

Mike,

Prueba así:
Code: Select all  Expand view
function CheckFile(oTmr)

   static lFound := .f.

   if ! lFound .and. file ("c:\pruebras.txt")
      lFound = .t.
      oTmr:Deactivate
      waitrun("apertura.exe") <--Este programa no tarda nada en ejecutarse
      ferase("C:\pruebas.txt")
      oTmr:Activate
      lFound = .f.
   endif

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42069
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Mike Serra » Wed Nov 15, 2006 11:46 pm

Buenas noches Antonio:

Solo quería decirte que funcionó correctamente, lo que si te pediria, cuando tengas tiempo, me digas que diferencias existe entre crear lfound como local en el main y pasarselo por referencia a checkfile (este caso no funciona) y generarla como static dentro de checkfile

UN SALUDO y muchas gracias ante todo
Mike Serra
 
Posts: 297
Joined: Fri Apr 14, 2006 5:52 pm
Location: Córdoba (España)

Postby Antonio Linares » Thu Nov 16, 2006 10:29 am

Mike,

Al declararla static dentro de la función se reusa su valor para multiples llamadas.

Las variables locales se crean en la pila, y se crean y se destruyen para cada llamada, luego no puedes usarlas para ese propósito.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42069
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 37 guests