Cita:
Empezado por david.rguez
...si sí almacenaba correctamente el valor... ¿por qué no me lo mostraba al inspeccionar la lista durante un punto de interrupción (justo después de haber ejecutado el "Add")?
|
Ahora veo que maeyanes podría estar en lo correcto cuando dijo:
Cita:
Empezado por maeyanes
A lo mejor el compilador la elimina por que no le encuentra relevancia...
|
Mientras yo estaba equivocado al decir:
Cita:
Empezado por jachguate
Estoy seguro que el optimizador no eliminaría una línea como esta.
|
.
Te explico brevemente: Delphi cuenta con un optimizador, que elimina todas aquellas instrucciones irrelevantes al ensamblar tu programa, de manera que no se gasten innecesariamente ciclos del procesador.
Así, si tenemos un código como este:
Código Delphi
[-]
var
I: Integer;
begin
I:= 10;
end;
Al comiplar, el optimizador se da cuenta que el valor de
I no es usado nunca, nos muestra un
hint en la consola y elimina la instrucción de asignación, pues el valor no se utilizará en el programa. Esta pieza de delphi es realmente sofisticada, y nunca lo he visto fallar. Así, al hacer algo como:
Código Delphi
[-]
var
L: TList;
begin
L:= TList.Create;
try
L.Add(Objeto1);
UsarLista(L);
L.Add(Objeto2);
finally
L.Free;
end;
end;
Es probable que el optimizador también note que luego de añadir el Objeto2, la lista no se use mas, y por tanto, la instrucción no es necesaria. Esto supone que el optimizador
conoce la VCL, y por tanto sabe cómo optimizar también su uso, cosa que yo no creía probable.
Habrá que leer un poco acerca de él.
Hasta luego.
pd. Edité tu mensaje para cambiar la etiqueta code por la
etiqueta delphi. Veras que queda mucho mejor.