![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Cita:
El porque del FreeAndNil. Código:
var
A1, A2: TTest;
begin
A2 := nil;
A1 := nil;
try
A1 := TTest.Create;
A2 := TTest.Create;
//Use A1 and A2
finally
if Assigned(A2) then FreeAndNil(A2);
A1.Free;
end;
// Aquí A2 siempre es Nil. Así, si tengo un descuido tal que...
A2.Propiedad_X := 1; // Genera excepción siempre y en el periodo de pruebas lo detecto a la primera
// Aquí A1 tiene un valor indeterminado.
A1.Propiedad_X := 1; // Según el estado de la memoria que apunte A1, unas veces generara excepción y otras no. Resultado: Errores aleatorios
end;
Código:
procedure FreeAndNil(var Obj);
{$IF not Defined(AUTOREFCOUNT)}
var
Temp: TObject;
begin
Temp := TObject(Obj);
Pointer(Obj) := nil; => Error
Temp.Free;
end;
{$ELSE}
begin
TObject(Obj) := nil; => Error
end;
{$ENDIF}
|
|
#2
|
||||
|
||||
|
Este caso raro es más bien un caso erróneo: estás haciendo referencia a tus objetos A1 y A2 fuera del bloque try-except que está justamente para protegerlos. Además, la sección finally se usa para liberar los objetos por lo que es un error querer usarlos fuera de esa cláusula.
LineComment Saludos |
|
#3
|
|||
|
|||
|
Cita:
|
|
#4
|
||||
|
||||
|
Es que no es la forma de hacerlo. No necesitas "cazar un error" que tú mismo estás provocando. Simplemente no provoques ese error.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Recursos en Español para delphi 6 | GerTorresM | Varios | 2 | 04-01-2010 15:11:16 |
| Ayuda para completar código:Traducción de Delphi a Builder | Pernorak | C++ Builder | 3 | 30-05-2007 12:45:16 |
| Traduccion de recursos (VCL) | arm | Varios | 0 | 22-09-2004 13:11:09 |
| Recursos en castellano para Delphi 7 | xerkan | Varios | 1 | 05-03-2004 09:27:42 |
|