Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-11-2016
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
__finally no es C++ estándar y solo funciona con los compiladores de Microsoft, por lo tanto en el c++builder no te va a funcionar. Además en tu código no lo necesitabas para nada y solo necesitabas quitarlo sin más.
Por otro lado ese código no está bien ya que si falla al obtener memoria, en tu código si o si intentará liberarla y eso es peligroso. Además cEntornoAnt es creado de forma estática e intentas liberar su memoria con delete, delete se usa para liberar la memoria obtenida con new. Así deberías ponerlo:
Código PHP:
char cEntornoAnt[256] = '\0';
try
{
     
TIniFile *fIni = new TIniFile(cEntornoAnt);
     try
     {
          
GetPrivateProfileString("DATOS""Entorno""C:\\DatAfi21\\Gia.ini"cEntornoAntsizeof(cEntornoAnt), cInicio.c_str());

          if (!
FileExists(cEntornoAnt))
               throw 
Exception("No se encuentra el fichero de configuracion antiguo.\nAvise al programador.");

          [
Resto del código]
     }
     catch(
Exception &exception)
     {
          
ShowMessage(exception.Message);
     }
     
delete fIni;

Responder Con Cita
  #2  
Antiguo 30-11-2016
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.912
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Ten en cuenta que C++ usa RAII:

https://es.wikipedia.org/wiki/RAII
Cita:
La técnica RAII es vital al escribir código C++ seguro frente a excepciones
Supongo que C++ builder lo permite...
__________________
El malabarista.
Responder Con Cita
  #3  
Antiguo 30-11-2016
j0seant j0seant is offline
Miembro
 
Registrado: feb 2006
Posts: 38
Poder: 0
j0seant Va por buen camino
Cita:
Empezado por aguml Ver Mensaje
__finally no es C++ estándar y solo funciona con los compiladores de Microsoft, por lo tanto en el c++builder no te va a funcionar.
__finally existe en C++Builder desde la versión 3 o 4, y funciona (aunque sea una extensión de Microsoft). No entro en si es más o menos recomendable usarlo, evidentemente siempre que se pueda usar RAII mucho mejor.

Muy útil también para estos casos "unique_ptr" o "auto_ptr".

Última edición por j0seant fecha: 30-11-2016 a las 17:33:32.
Responder Con Cita
  #4  
Antiguo 30-11-2016
exmachina exmachina is offline
Miembro
NULL
 
Registrado: sep 2016
Ubicación: 127.0.0.1
Posts: 30
Poder: 0
exmachina Va por buen camino
Cita:
Empezado por j0seant Ver Mensaje
__finally existe en C++Builder desde la versión 3 o 4, y funciona (aunque sea una extensión de Microsoft). No entro en si es más o menos recomendable usarlo, evidentemente siempre que se pueda usar RAII mucho mejor.

Muy útil también para estos casos "unique_ptr" o "auto_ptr".
Que yo sepa el uso de los bloques try...catch..finally tienen un coste, tanto en memoria como en eficiencia, sobre todo cuando no se intercepta unas excepciones concretas-> es decir cuando se interceptan todas las excepciones y se debe desenrollar toda la pila. En internet pueden encontrarse multitud de documentos que explican esto (basicamente quiere decir que es muy comodo usar las excepciones pero repercuten en el rendimiento)

Sobre __try, __except y __finally (SEH) y cosas similares (controlar errores y excepciones en C++) en Windows :
https://msdn.microsoft.com/en-us/library/hh279678.aspx
https://msdn.microsoft.com/en-us/library/swezty51.aspx

Y por cierto, aunque no no soy programador ya se que existen documentos similares a este, pero hacen referencia a C++/CLI y aun asi sigue existiendo el mismo problema, aunque no se mencione.

Un saludo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Try/except/finally jsc OOP 14 13-09-2011 19:06:14
Capturar Errores con Try, Finally, End GerTorresM OOP 1 23-04-2011 23:16:01
Try Except --finally-- Caral Varios 13 02-10-2006 22:12:24
Errorsys, o gestión de errores dec Trucos 0 01-07-2006 12:22:43
Gestión Errores en DBEXPRESS asirvent Conexión con bases de datos 0 21-11-2003 12:39:48


La franja horaria es GMT +2. Ahora son las 05:13:31.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi