Hola Celta.
La verdad que yo tampoco por que no me dá ningún error de ese modo.
Te pongo la prueba sencilla que hice, por ahí te sirve para sacar alguna idea.
Código Delphi
[-]
type
TForm1 = class(TForm)
btCargar: TButton;
btMostrar: TButton;
btLiberar: TButton;
procedure btCargarClick(Sender: TObject);
procedure btMostrarClick(Sender: TObject);
procedure btLiberarClick(Sender: TObject);
private
FLst: TList;
public
end;
var
Form1: TForm1;
implementation {$R *.dfm}
uses Jpeg;
procedure TForm1.btCargarClick(Sender: TObject);
var
Img: TImage;
i: Integer;
begin
FLst:= TList.Create;
for i:= 1 to 5 do
begin
Img:= TImage.Create(Self);
Img.Name:= 'Img'+IntToStr(i);
Img.Left := 120*i;
Img.Stretch:= True;
Img.Picture.LoadFromFile('C:\FOTO.JPG'); FLst.Add(Img);
end;
end;
procedure TForm1.btMostrarClick(Sender: TObject);
var
i: Integer;
begin
for i:= 0 to FLst.Count -1 do
TImage(FLst.Items[i]).Parent:= Self;
end;
procedure TForm1.btLiberarClick(Sender: TObject);
var
i: Integer;
Ene: TImage;
begin
for i:= FLst.Count - 1 downto 0 do
begin
Ene:= TImage(FLst.Items[i]);
if (Ene.Name = 'Img1') or (Ene.Name = 'Img3') then
begin
TImage(FLst.Items[i]).Free;
FLst.Delete(i);
end;
end;
end;
Funciona igual si eliminas todos los items de la lista, el if lo puse para simular un condicional como en tu código.
Espero te ayude.
Saludos.