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 

try

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

Arrow hola

como hago para manejar con un mismo try, un catch y un __finally.

porque cuando uso los dos me da un mensaje de error.

Gracias
_________________
"Cállate, o di algo mejor que el silencio"
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Si haces un

AnsiString x="hola";
try
{
x.ToInt();
}
catch(...)
{
ShowMessage("ERROR");
}

eso si tienes el debug (ejecutandolo desde builder) te para la ejecucion, pero si lo abres desde el exe, te muestra un mensaje que pone...ERROR
_________________
Los problemas mas dificiles tienen las soluciones mas sencillas
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Mmh... no sé si quizás se refiere a eso.
Cada try puede ir sólo con un catch o un finally, no con ambos.
Si quieres tener catch y finally, tienes que hacer 2 try.
_________________
"Todo es posible si Ud. no sabe de qué está hablando"
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Hola

Este es el codigo del try, sobre el cual tengo la duda

void __fastcall TForm2::FormCreate(TObject *Sender)
{

...

Graphics::TBitmap* pScaleBitmap = new Graphics::TBitmap();
pScaleBitmap->PixelFormat = pf8bit;
pScaleBitmap->HandleType = bmDIB;
pScaleBitmap->Width = 20;
pScaleBitmap->Height = 256;
LOGPALETTE* pal = NULL;

try
{
pal = (LOGPALETTE*) malloc( sizeof(LOGPALETTE) + sizeof(PALETTEENTRY) * 256);

pal->palVersion = 0x300;
pal->palNumEntries = 256;

for(short i = 0 ; i < 256 ; i++)
{
pal->palPalEntry[i].peRed = (Byte)i;
pal->palPalEntry[i].peGreen = pal->palPalEntry[i].peRed;
pal->palPalEntry[i].peBlue = pal->palPalEntry[i].peRed;
}

HPALETTE hpal = CreatePalette(pal);

if(hpal)
{
pScaleBitmap->Palette = hpal;
GetDIBColorTable(pScaleBitmap->Canvas->Handle, 0, 256,
OldPalette);
}
}
}
__finally
{
free(pal);
}

...

}


Lo que quiero hacer es que cuando haga el llamado de la funcion MALLOC, si
no hay memoria disponible que me muestre un mensaje indicando que no hay
memoria, pero que no continue con la carga o ejecucion del resto de codigo.

Espero haberme hecho comprender.

Gracias
_________________
"Cállate, o di algo mejor que el silencio"
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

prueba con la instruccion return;
_________________
Siempre hay que tratar de ser el mejor, pero nunca creerse el mejor (Juan Manuel Fangio)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
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.