Como interrumpir un bucle?

Como interrumpir un bucle?

Postby Rafael Clemente » Thu Nov 30, 2006 5:43 pm

Tengo un botón y un bucle Do while, en el que hago las mediciones. Quisiera que al pulsar el botón terminase el bucle. Ahora lo hago así:

Code: Select all  Expand view
@ r,c, Button "Stop"..... ACTION lOk := .F.
lOk := .T.
Do While lOk
     MiFuncionDeMedir()
     ....
Enddo


Pero reacciona muy lentamente. O sea: Entre la pulsación del botón y el fin del bucle pasan algunos segundos. ¿Hay alguna forma de hacer un Break inmediato? Existe alguna función del API de windows o algo así? Gracias

Rafael
User avatar
Rafael Clemente
 
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Postby Antonio Linares » Thu Nov 30, 2006 6:03 pm

Rafael,

Prueba a llamar a SysRefresh() en el bucle:
Code: Select all  Expand view
Do While lOk
     MiFuncionDeMedir()
     SysRefresh()
Enddo
regards, saludos

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

Postby Rafael Clemente » Thu Nov 30, 2006 7:19 pm

Antonio:
Tengo varios SysRefreh() tanto en el bucle como en MiFuncion(). La variable lOk está declarada como Pública.

Más o menos la cosa funciona. "Pastosa", pero funciona. Sólo quería saber si había alguna función escondida por ahí que permitiese forzar una interrupción más ágil, algo así como una interrupción por teclado...

Gracias

Rafael
User avatar
Rafael Clemente
 
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Postby Antonio Linares » Fri Dec 01, 2006 12:48 pm

Rafael,

Ese proceso lo estás haciendo en bases de datos en la tarjeta de memoria ? Procura hacerlo en ram, no en la tarjeta.
regards, saludos

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

Postby Rafael Clemente » Fri Dec 01, 2006 1:01 pm

Antonio:
El proceso consiste simplemente en capturar unos strings de seis cifras que llegan via RS-232 a un ritmo de uno cada diez segundos. Una vez capturado, lo grabo en un Dbf. Programa y datos los tengo en la tarjeta de memoria, en la misma carpeta. Intentaré pasarlos a RAM.

Por cierto, ahora abro las tablas como USE CurDir()+"\Tabla.dbf". Si pongo el programa en RAm pero mantendo las dbfs en la tarjeta, como he de acceder a ella? Quiero decir: Ya no será Curdir(), no?

Saludos,

Rafael
User avatar
Rafael Clemente
 
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Postby Antonio Linares » Fri Dec 01, 2006 1:06 pm

Rafael,

Las tarjetas de memoria son algo lentas en acceso a escritura. Procura poner las DBFs en ram. Para usarlas puedes seguir usando CurDir(), si las tienes en donde esté la aplicación (en RAM también). Si no es el caso, especifica su path "carpeta\...".

Cuando el proceso termine, cópialas a la tarjeta de memoria, en caso de que necesites llevarte la tarjeta a otra parte.
regards, saludos

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

Estoy interado en esto

Postby mjcc » Mon Dec 04, 2006 1:12 pm

Como puedo colocar las bases de datos en RAM.

gracias
imjcc@mjccsl.com
mjcc
 
Posts: 139
Joined: Fri Apr 07, 2006 9:16 pm

Postby Antonio Linares » Mon Dec 04, 2006 1:35 pm

> Como puedo colocar las bases de datos en RAM.

tenlas en cualquier directorio que no sea "SD card" ó "Tarjeta Memoria"
regards, saludos

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

Gracias

Postby mjcc » Mon Dec 04, 2006 1:47 pm

Gracias
mjcc
 
Posts: 139
Joined: Fri Apr 07, 2006 9:16 pm


Return to FiveWin para Pocket PC

Who is online

Users browsing this forum: No registered users and 40 guests