Como interrumpir un bucle?

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

Como interrumpir un bucle?

Post by Rafael Clemente »

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

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

Post by Antonio Linares »

Rafael,

Prueba a llamar a SysRefresh() en el bucle:

Code: Select all

Do While lOk 
     MiFuncionDeMedir() 
     SysRefresh() 
Enddo
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Post by Rafael Clemente »

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

Post by Antonio Linares »

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
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Post by Rafael Clemente »

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

Post by Antonio Linares »

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
mjcc
Posts: 139
Joined: Fri Apr 07, 2006 9:16 pm

Estoy interado en esto

Post by mjcc »

Como puedo colocar las bases de datos en RAM.

gracias
imjcc@mjccsl.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

> 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
mjcc
Posts: 139
Joined: Fri Apr 07, 2006 9:16 pm

Gracias

Post by mjcc »

Gracias
Post Reply