Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Überprüfen ob eine TStringList schon freigegeben ist


Bob Murphy - Do 16.04.09 02:27
Titel: Überprüfen ob eine TStringList schon freigegeben ist
Moin,
ich stehe wieder einmal vor einen kleinen Problem.
Gibt es eine Möglichkeit zu überprüfen ob eine TStringList schon freigegeben ist?
Hatte an sowas ähnliches gedacht^^

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
if StringList = free then
begin
  tu dies und das.....
end
else
begin
  StringList.Free;
end;


Hoffe jemand hat eine Idee:)

LG Bob


Andreas L. - Do 16.04.09 05:04

Vielleicht hilft dir das hier weiter:


Delphi-Quelltext
1:
2:
3:
4:
if Assigned(DeineStringList) then
  //ist noch nicht freigegeben
else
  //ist freigegeben


Nächtliche Grüße,
Andy


Bob Murphy - Do 16.04.09 06:12

Ja sauber:) klappt wunderbar:)

BIG BIG THX

LG Bob


BenBE - Do 16.04.09 07:34

Verwende zum Freigeben bitte FreeAndNil, da sonst die Wirksamkeit von Assigned nicht gewährleistet ist.


Bob Murphy - Do 16.04.09 19:47

KK:) Danke für den Tipp:)


Yogu - Do 16.04.09 19:52

user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
Verwende zum Freigeben bitte FreeAndNil, da sonst die Wirksamkeit von Assigned nicht gewährleistet ist.

Die Alternative möchte ich auch noch erwähnen:


Delphi-Quelltext
1:
2:
StringList.Free;
StringList := nil;

Nichts weiter macht FreeAndNil, man kann es aber auch ausgekoppelt schreiben.


jakobwenzel - Do 16.04.09 20:05

Wenn dann aber ne Exception im Destruktor auftritt ist das Objekt freigegeben aber wird nicht nil gesetzt.
FreeAndNil machts anders:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure FreeAndNil(var Obj);
var
  Temp: TObject;
begin
  Temp := TObject(Obj);
  Pointer(Obj) := nil;
  Temp.Free;
end;