Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Verständnisfragen zu TObject und TObjectList (https://www.delphipraxis.net/116312-verstaendnisfragen-zu-tobject-und-tobjectlist.html)

Yheeky 26. Jun 2008 17:05


Verständnisfragen zu TObject und TObjectList
 
Hi,

ich habe nochmal eine Verständnisfrage bezüglich Objekte:
Angenommen ich habe folgende Klassen:

Delphi-Quellcode:
type
 TAuto = class(TObject)
  Marke : String;
  Modell : String;
  Baujahr : Integer;
 end;
 
type
 TAutoSammlung = class(TObjectList)
end;

{...}

var autoSammlung : TAutoSammlung;

{...}

procedure TForm1.Create(...);
begin
  autoSammlung := TAutoSammlung.Create(True);
end;
Nun kann einer Autosammlung ja über folgenden Code ein Auto hinzufügt werden:

Delphi-Quellcode:
procedure TForm1.ErstelleNeuesAuto(auto_Marke : String, auto_Marke : String, auto_Baujahr : Integer);
var newCar : TAuto;
begin
  // (2)
  newCar := TAuto.Create;
  newCar.Marke := auto_Marke;
  newCar.Modell := auto_Marke;
  newCar.Baujahr := auto_Baujahr;

  autoSammlung.Add(newCar);
end;
So und nun die Verständnisfragen:
1.) Ist es richtig, dass ich nun das Objekt newCar NICHT über FreeAndNil(newCar); oder newCar.Free; freigeben darf, weil in der AutoSammlung quasi nur der Verweis auf das Auto-Objekt steht?
2.) Wenn ich immer nur EIN Auto integriert haben möchte (was zugegebenermaßen wenig Sinn bei einer AutoSammlung macht *g*, aber es geht ums Verständnis), muss ich dann an der mit (2) markierten Stelle nicht FreeAndNil(newCar); einbauen, weil ich doch sonst immer ein weiteres Auto-Objekt hinzufüge?

Die beiden Fragen haben sich mir gerade noch gestellt...wäre super, wenn jemand etwas Lichts ins Dunkle bringen könnte ;-)

sirius 26. Jun 2008 17:17

Re: Verständnisfragen zu TObject und TObjectList
 
1) Ja
2) nö, wieso, verstehe deinen Gedankengang nicht.

Die Muhkuh 26. Jun 2008 17:22

Re: Verständnisfragen zu TObject und TObjectList
 
Hi,

zu zwei: Du könntest per Items[0] das Auto auslesen und die Eigenschaften verändern.

Quasi so:

Delphi-Quellcode:
procedure TForm1.ErstelleNeuesAuto(auto_Marke : String, auto_Marke : String, auto_Baujahr : Integer);
var newCar : TAuto;
begin
  newCar = TAuto(autoSammlung.Items[0]);

  if newCar = nil then
  begin
    newCar := TAuto.Create;
    autoSammlung.Add(newCar);
  end;

  newCar.Marke := auto_Marke;
  newCar.Modell := auto_Marke;
  newCar.Baujahr := auto_Baujahr;
end;

Yheeky 26. Jun 2008 17:41

Re: Verständnisfragen zu TObject und TObjectList
 
Stimmt, so könnte ich das machen ;-)
Okay, dann danke für eure Hilfe...ganz schön viele Fragen rund um Objekte und Objektlisten, aber so lernt man am Besten :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:40 Uhr.

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