Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#26

AW: TObjectList als Result

  Alt 28. Okt 2014, 12:02
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;
  Mit Zitat antworten Zitat