Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Como parar Bucle?

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Como parar Bucle? Responder citando

Cool Que hacen...

Soy nuevito en este asunto asi que voy a pedirles algo de ayuda.

Tengo una fución que recibe dos parametros (un entero y un nombre de archivo) y que la llamo y ejecuto cuando doy click en un boton. La función escribe 1 y/o 0 aleatoriamente en un archivo. El total de datos varia de acuerdo a NFR, la función es (Trabajo con B4):

void TForm1::SRand(int NFR char *filen)
{
TMemoryStream* Frames = new TMemoryStream;
char dt;
randomize();
Frames->Position = 0;
for (unsigned long i=0;i<268*NFR*1.0;i++)
{
if (random(2)==1)
dt=49;
else
dt=48;
Frames->Write(&dt, 1);
}
Frames->Position = 0;
Frames->SaveToFile(filen);

delete Frames;
}


Hasta aqui, todo bien. Mi problema es que NFR puede hacer que la cantidad de datos supere el millon, fuera de eso tengo algunas funcionas similares que se ejecutan una detrás de otra al dar INICIO. Asi que necesito a traves de otro boton, parar esta funcion, algo asi como un PARAR o ABORTAR, pero que no sea por medio de Timer, tengo entendido que esto se hace con Thread (hilos). Si me pueden dar una solucion la agradezco desde ahora.

Gracias por su ayuda.

PD: Tambien necesito saber si los datos entrados por el usuario a traves de un TEdit sean sólo números enteros, sin letras ni simbolos.
_________________
--Gregus
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Lo del parar el bucle podrías hacerlo con un while al pulsar una tecla dentro del OnKeyPress (esto lo digo sin haberlo probado):

Código:

while (Key!='a' || i<268*NFR*1.0)
 ....


Lo de los números sería algo como:
Código:

void __fastcall TForm1::TEdit1KeyPress(TObject *Sender, char &Key)
{
        if((Key<'0' || Key >'9') && Key!=8)
                Key=0; //ignoro la pulsación
}


Suerte![/code]
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Gracias Responder citando

Gracias Marky, el codigo de los números estuvo genial funciono bien.
Para lo del bucle ya intente algo similar y no funciono. Muchas gracias. Smile
_________________
--Gregus
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola


Para detener el ciclo puedes usar un boton que asigne un valor a variable y la validas en cada ciclo, para que el click funcione tienes que llamar a Application->ProcessMessages();
_________________
Saludos
Roger Ruiz
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Gracias Responder citando

Gracias CANCUN por lo del ciclo, ya probel el truquillo y funciono muy bien. Era exactamente lo que buscaba. Very Happy
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.