AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Objectlist.Add(). überladen

Ein Thema von Noobmaster · begonnen am 21. Aug 2011 · letzter Beitrag vom 22. Aug 2011
 
mezen

Registriert seit: 13. Jul 2011
Ort: Lippstadt
30 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

AW: Objectlist.Add(). überladen

  Alt 22. Aug 2011, 07:11
Delphi-Quellcode:
   EinObjekt := TObject.Create();
   EinObjekt.Name := '1';
   Objektliste.Add(EinObjekt);
   {EinObjekt.Destroy;
   EinObjekt := nil;   Das Objekt in der Liste geht auch verloren!}

   EinObjekt := TObject.Create();
   EinObjekt.Name := '2';
   Objektliste.Add(EinObjekt);
Bei dem Code ist so in dieser Form erstmal kein Fehler drin (wenn man davon absieht, dass TObject keine Property Name hat), du kannst ohne Probleme sowas aufbauen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  LObjectList: TObjectList;
  LObject: TObject;
begin
  LObjectList := TObjectList.Create(True);
  try
    for i := 0 to 9 do
    begin
      LObject := TObject.Create();
      LObject.Name := 'foo';
      LObjectList.Add(LObject);
    end;
  finally
    LObjectList.Free;
  end;
end;
Bei TObjectList.Create wird der Parameter True übergeben, welcher bedeutet, dass beim freigeben der Objectliste auch alle dahinter liegenden Objecte mit freigegeben werden. Solltest du den parameterlosen Constructor aufrufen, geschieht dies ebenso.
Wenn du Instanzen von Objekten übergibst, übergibst du eigentlich nie das Objekt selber, sondern nur die Referenz auf die Speicheradresse wo das Objekt liegt. Daraus folgt, dass in der LObjectList und im LObject nur Zeiger auf ein und das selbe Objekt sind. Wenn du jetzt über einen dieser Zeiger das Objekt freigibst, dann zeigt die andere Referenz immer noch dahin, beim Aufrufen wirst du dort aber kein Objekt mehr finden.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz