Viel Diskussion um das Thema, aber auf den zweiten Fehler ist niemand direkt eingegangen:
Delphi-Quellcode:
var
MyList: TObjectlist;
counter : integer;
begin
Mylist := ImageLoader;
Allrounder := TImage(Imageloader.Items[5]);
Allrounder.Picture.LoadFromFile('Unbenannt.jpg');
end;
Wenn "ImageLoader" zwei mal aufgerufen wird, werden natürlich auch zwei Objektlisten erstellt.
Und die zweite kann man bei dieser Art des Aufrufs auch nicht mehr freigeben.
Delphi-Quellcode:
Mylist := ImageLoader;
try
Allrounder := TImage(Mylist[5]);
finally
MyList.Free;
end;
Abgesehen davon währe ein Property mit Index hier sinnvoller:
Delphi-Quellcode:
TForm1 =
class(TForm)
Image1: TImage;
Image2: TImage;
Image3: TImage;
Image4: TImage;
Image5: TImage;
Image6: TImage;
Image7: TImage;
Allrounder : TImage;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
function GetImageLoader(AIndex: Integer): TImage;
public
{ Public-Deklarationen }
property ImageLoader[AIndex: Integer]: TImage
read GetImageLoader;
end;
implementation
function TForm1.GetImageLoader(AIndex: Integer): TImage;
begin
{alternativ FindComponent}
case AIndex
of
0: Result := Image1;
1: Result := Image2;
2: Result := Image3;
{...}
6: Result := Image7;
else
raise Exception.CreateFmt('
ungültiger Index: GetImageLoader(%d)', [AIndex]);
end;
end;
begin
Allrounder := ImageLoader[5];
Allrounder.Picture.LoadFromFile('
Unbenannt.jpg');
end;