AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Objekte / Freigaben / Free / Nil
Thema durchsuchen
Ansicht
Themen-Optionen

Objekte / Freigaben / Free / Nil

Ein Thema von Alex_ITA01 · begonnen am 9. Okt 2013 · letzter Beitrag vom 10. Okt 2013
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.077 Beiträge
 
Delphi 12 Athens
 
#1

AW: Objekte / Freigaben / Free / Nil

  Alt 9. Okt 2013, 15:38
Ich muss allerdings TStringList ableiten, da ich noch ein paar andere Funktionen nachgepflegt habe in meiner abgeleitetn TStringList.
Reicht es dann, wenn ich in meiner abgeleiteten Liste das OwnObjects auf True setze?
Ja.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#2

AW: Objekte / Freigaben / Free / Nil

  Alt 9. Okt 2013, 15:47
Ich habe jetzt folgendes geändert aber das globale Objekt ist immernoch verfügbar:

Delphi-Quellcode:
destructor TFreeObjList.Destroy;
Var
  i : Integer;
  TmpObj : TObject;
begin
  {for i:=0 to Count-1 do
  begin
    TmpObj := Objects[i];
    if Assigned(TmpObj) then
      FreeAndNil(TmpObj);
  end; }


  Inherited Destroy;
end;

procedure TForm4.FormCreate(Sender: TObject);
begin
  MyObjList := TFreeObjList.Create;
  MyObjList.OwnsObjects := True;
end;
Also hat sich eigentlich nichts dadurch geändert.
Was habe ich denn falsch gemacht bzw. falsch verstanden?

Gruß
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.077 Beiträge
 
Delphi 12 Athens
 
#3

AW: Objekte / Freigaben / Free / Nil

  Alt 9. Okt 2013, 15:59
Ich habe jetzt folgendes geändert aber das globale Objekt ist immernoch verfügbar:

Delphi-Quellcode:
procedure TForm4.FormCreate(Sender: TObject);
begin
  MyObjList := TFreeObjList.Create;
  MyObjList.OwnsObjects := True;
end;
Und wo gibst du MyObjList frei? Ich hätte jetzt im FormDestroy ein MyObjList.Free oder ein entsprechendes FreeAndNil erwartet.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Objekte / Freigaben / Free / Nil

  Alt 9. Okt 2013, 15:59
Free bzw. Destroy gibt nur den Speicherbereich wieder frei – das sagt nur dem Speichermanager, dass er den Speicherplatz neu vergeben darf. Der Speicher wird aber nicht überschrieben – wozu auch, normalerweise sollte da ja niemand mehr drauf zugreifen.

Es kann also schon sein, dass nach einer Freigabe die Daten des Objektes noch an der Stelle im Speicher stehen, obwohl das Objekt nicht mehr existiert. Darauf kann man sich aber nicht verlassen.
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:14 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