Ver Mensaje Individual
  #8  
Antiguo 01-02-2012
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Reputación: 26
delphi.com.ar Va por buen camino
Agregando a lo que dijeron anteriormente, hay un tema un poco oscuro en esta forma de tratar el manejo de errores al crear objetos:

Código Delphi [-]
...
  Obj1 := TClase.Create;
  Obj2 := TClase.Create;
  Obj3 := TClase.Create;
  Try
     {...}
  finally
    Obj1.Free;
    Obj2.Free;
    Obj3.Free;
  end;

Es algo muy fuera de lo común, pero imaginemos que estos constructores producen errores: si el constructor del primer objeto falla, este no se ha creado, suponemos que la clase gestiona bien la memoria y no es necesario liberarlo pues no se ha creado, pero si falla el segundo o el tercero, los objetos anteriores han sido creados y nunca se ejecutará el código donde liberamos la memoria de los mismos. Por eso tengo la costumbre, de que cada constructor tiene asociado un bloque de control de errores para poder liberar el espacio utilizado, ejemplo:

Código Delphi [-]
...
  Obj1 := TClase.Create;
  Try
    {...}
    Obj2 := TClase.Create;
    Try
      {...}
      Obj3 := TClase.Create;
      Try

        {...}

      finally
        Obj3.Free;
      end;
    finally
      Obj2.Free;
    end;
  finally
    Obj1.Free;
  end;

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita