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 

problema con el siguiente codigo.

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: problema con el siguiente codigo. Responder citando

el asunto es el siguiente:
tengo que activar un Timer con el simple click en un boton, pero como dentro de este objeto Timer tengo condicionales como los que se muestran en el siguiente codigo el linkado se me bloquea, y me presenta un error, hice este mismo experimento pero sin condicionales y me corre bien, pues lo que quiero decir es que me ayuden a solucionar este problema o que me digan si es que estoy haciendo alguna violacion.

gracias. saludos




void __fastcall TForm2::Button2Click(TObject *Sender)
{
Timer1->Enabled=true; // al hacer click en el boton activo el Timer

}
//---------------------------------------------------------------------------

void __fastcall TForm2::Timer1Timer(TObject *Sender)
{
float i,a,w,b,o,t,v,p,tf;
t=StrToInt(Edit1->Text); // tiempo inicial de la simulación
tf=StrToInt(Edit2->Text); // tiempo final de la simulación

if(Form1->cb=="")
{}

if(Form1->cb=="Triangular")
{if(ComboBox1->Text=="R1") // selecciona la resistencia a simular
{
a=Form1->I13;
b=Form1->vr1;
o=Form1->Pr1;
w=Form1->w;
i=a*0.65*asin(sin(w*t*0.0005)); // grafica corriente
v=b*0.65*asin(sin(w*t*0.0005)); // grafica voltaje
p=o*p*0.65*asin(sin(w*t*0.0005)); // grafica potencia
Series1->AddXY(t,i,"",clRed);
Series2->AddXY(t,v,"",clGreen);
Series3->AddXY(t,p,"",clYellow);
t++;
if(t==tf) Timer1->Enabled=false;
}
}
if(Form1->cb=="Cuadrada")
{}
if(Form1->cb=="Senoidal")
{}
if(Form1->cb=="Diente Sierra")
{}
}
Volver arriba
Mensaje    Asunto: Responder citando

No he visto a fondo el código, pero si hay una cosa que yo he aprendiod al usar los timer. Cuando ejecutas el código asociado al OnTimer, lo primero que debes hacer es descativarlo al entrar. Es decir:
Código:
void __fastcall TForm2::Timer1Timer(TObject *Sender)
{
     float i,a,w,b,o,t,v,p,tf;

     Timer1->Enabled = false;
     [... Código a ejecutar ...]
     Timer1->Enabled = true;
}

Ten en cuenta que si no hace esto, mientras se evalúa el código pude volver a cumplirse el intervalo que se haya fijado y metes el programa en un bucle sin salida.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
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.