 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
goyoko Invitado
|
Publicado: Lun 07 Abr, 2003 6:37 pm Asunto: Try Catch |
|
|
Holas..
He estado tratando de utilizar la función Try Catch.. pero no resulta me sigue tirando el error de programa.. y el programa se detiene. El error ocurre cuando dejo los Tedit vacíos.. supongo que es por que la cadena está vacía y no puede transformar nada.
Me arroja la excepción.. EConverError
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if ( (Edit1->Text!=" ") && (Edit2->Text!=" ") && (Edit3->Text!=" ") && (Edit4->Text!=" ") && (Edit5->Text!=" ") && (Edit6->Text!=" ") && (Edit7->Text!=" ") && (Edit8->Text!=" ") )
{
mensaje->Caption = " ";
//Declaración de constantes
B = 13.000;
D = 4;
try
{
//traspaso de las medidas a varieables
a1 = Edit1->Text.ToDouble();
b1 = Edit2->Text.ToDouble();
x1 = Edit3->Text.ToDouble();
y1 = Edit4->Text.ToDouble();
Tp = Edit5->Text.ToDouble();
Ts = Edit6->Text.ToDouble();
F = Edit7->Text.ToDouble();
Isec = Edit8->Text.ToDouble();
}
catch (EConvertError&)
{
};
//Inicio de los cálculos
Sfe = a1*b1;
Sv = x1*y1;
Np = (Tp*pow10( )/(4.44*F*B*Sfe);
Ns = (Np*Ts)/(Tp);
P = (pow(Sfe,2))/1.41;
Ps = Ts*Isec;
Pp = Ps;
Ip = Pp/Tp;
Isec = Ps/Ts;
Sp = Ip/D;
Ss = Isec/D;
Dp = sqrt(Sp/0.785);
Ds = sqrt(Ss/0.785);
SHp = pow(Dp,2);
SHs = pow(Ds,2);
STHp = Np*SHp;
STHs = Ns*SHs;
STHps = STHp+STHs;
}
else {mensaje->Caption = "Las celdas estan vacías";};
// mensaje de termino de calculos
mensaje->Caption = "Cálculos Finalizados";
ComboBox1->Enabled = true;
ComboBox1->Text = "(elija medida para mostrar)";
}
Alguien sabe como lo podría solucionar
Muchas gracias |
|
| Volver arriba |
|
 |
jaquemate Lt Cmdr


Registrado: 30 Sep 2002Mensajes: 110
|
Publicado: Lun 07 Abr, 2003 11:41 pm Asunto: jaquemate |
|
|
Es normal: dentro del entorno IDE del C++Builder, las excepciones que se producen se muestran aunque esten controladas con el catch. Puedes pulsar F9 y verás como continúa la ejecución del programa. Sin embargo, si ejecutas el programa fuera del entorno, verás como no se produce la excepción. Bueno, en realidad se produce pero es controlada por la instrucción catch.
De todas formas, creo que deberías incluir una instrucción return dentro del bloque catch para que el programa no continúe con los cálculos.
Un saludo. |
|
| Volver arriba |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|