TIMER

Post Reply
Mike Serra
Posts: 287
Joined: Fri Apr 14, 2006 5:52 pm
Location: Córdoba (España)

TIMER

Post by Mike Serra »

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]
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Mike,

Prueba así:

Code: Select all

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
Mike Serra
Posts: 287
Joined: Fri Apr 14, 2006 5:52 pm
Location: Córdoba (España)

Post by Mike Serra »

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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

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
Post Reply