Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TObjectList als Result (https://www.delphipraxis.net/182468-tobjectlist-als-result.html)

Kuehter 27. Okt 2014 14:46

TObjectList als Result
 
Habe ein kleines Programm geschrieben das eine TObjectList als REsult nehmen soll nur jedes mal wenn ich den Button drücke hat er mir fehler raus das er auf bestimmte speicher nicht zugreifen kann oder das da was nicht stimmt.
bitte um hilfe

Delphi-Quellcode:

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Contnrs, JPeg;

type
  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);
    function imageloader : TObjectList;

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.imageloader: TObjectList;
begin
    Result.Create;
    Result.Add(Image1);
    Result.Add(Image2);
    Result.Add(Image3);
    Result.Add(Image4);
    Result.Add(Image5);
    Result.Add(Image6);
    Result.Add(Image7);
end;

procedure TForm1.Button1Click(Sender: TObject);

var
    MyList: TObjectlist;
    counter : integer;

begin

    Mylist := ImageLoader;
    Allrounder := TImage(Imageloader.Items[5]);
    Allrounder.Picture.LoadFromFile('Unbenannt.jpg');

end;

end.

DeddyH 27. Okt 2014 14:48

AW: TObjectList als Result
 
Zitat:

Delphi-Quellcode:
Result.Create;

-->
Delphi-Quellcode:
Result := TObjectList.Create;
Hatten wir das nicht erst letzte Woche? Übrigens sollte man im Allgemeinen keine Objektinstanzen aus Funktionen zurückgeben, die innerhalb derer erst angelegt werden. Wo wird die Liste samt der enthaltenen Objekte denn wieder freigegeben?

Neutral General 27. Okt 2014 14:57

AW: TObjectList als Result
 
Wieso nicht?

Delphi-Quellcode:
NeueListe := FunktionIrgendwas();
try

finally
  NeueListe.Free;
end;

DeddyH 27. Okt 2014 15:07

AW: TObjectList als Result
 
Und wenn Du Dir das nach 6 Monaten noch einmal anschaust, wunderst Du Dich, dass da eine Freigabe erfolgt, ohne dass vorher ein Konstruktoraufruf ersichtlich ist, denn der steht ja woanders, womöglich noch in einer ganz anderen Unit.

Neutral General 27. Okt 2014 15:11

AW: TObjectList als Result
 
Wenn man der Funktion einen aussagekräftigen Namen gibt anhand dem ersichtlich ist, dass das Objekt darin erstellt wird sehe ich da kein Problem. Aber ich denke das ist Geschmackssache.

DeddyH 27. Okt 2014 15:12

AW: TObjectList als Result
 
Hier habe ich mich mal mit dem Thema beschäftigt: http://www.detlef-heibing.de/program...rueckgabe.html

himitsu 27. Okt 2014 15:19

AW: TObjectList als Result
 
Da hier die Referenzen nicht in der Liste verwaltet werden, verwende ich bei sowas gern dynamische Arrays als Result.

Stevie 27. Okt 2014 17:25

AW: TObjectList als Result
 
Interface basierte Listen, boom! 8-)

Klar gehen die erst ab Delphi 2010 aber es dürfte ja ein leichtes sein, sich ne schlanke TInterfacedObjectList mit entsprechendem Interface zu bauen, wenn man mit nem älteren Delphi hantiert.

TiGü 27. Okt 2014 17:55

AW: TObjectList als Result
 
Früher gab es IInterfaceList bzw. IInterfaceListEx in der Classes-Unit.

Stevie 27. Okt 2014 18:38

AW: TObjectList als Result
 
Zitat:

Zitat von TiGü (Beitrag 1277585)
Früher gab es IInterfaceList bzw. IInterfaceListEx in der Classes-Unit.

Gibt es immer noch und das ist ein Interface, was Zugriff auf eine Liste von Interfaces gibt, wie der Name auch schon andeutet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:07 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz