{*******************************************************}
{ }
{ Utils }
{ }
{ 版权所有 (C) 2004 nil }
{ }
{ 2004-6-14 }
{ }
{*******************************************************}
{
purpose:
一个自释放其中存储的对象的TStringList
}
unit com.sunset.cls.autofreestringlist;
interface
uses Classes, SysUtils;
type
{ TAutoFreeStringList }
TAutoFreeStringList = class(TStringList)
protected
procedure FreeObjects; virtual; abstract;
public
destructor Destroy; override;
end;
TStructStringList = class(TAutoFreeStringList)
protected
procedure FreeObjects; override;
end;
TObjectStringList = class(TAutoFreeStringList)
protected
procedure FreeObjects; override;
end;
implementation
{ TStructStringList }
procedure TStructStringList.FreeObjects;
var
i: integer;
begin
for i := 0 to Count - 1 do
if Assigned(Objects[i])then
Dispose(Pointer(Objects[i]));//这样释放结构体指针
end;
{ TObjectStringList }
procedure TObjectStringList.FreeObjects;
var
i: integer;
begin
for i := 0 to Count - 1 do
if Assigned(Objects[i])then
Objects[i].Free;//这样释放一个对象
end;
{ TAutoFreeStringList }
destructor TAutoFreeStringList.Destroy;
begin
FreeObjects;
inherited;
end;
end.
{ }
{ Utils }
{ }
{ 版权所有 (C) 2004 nil }
{ }
{ 2004-6-14 }
{ }
{*******************************************************}
{
purpose:
一个自释放其中存储的对象的TStringList
}
unit com.sunset.cls.autofreestringlist;
interface
uses Classes, SysUtils;
type
{ TAutoFreeStringList }
TAutoFreeStringList = class(TStringList)
protected
procedure FreeObjects; virtual; abstract;
public
destructor Destroy; override;
end;
TStructStringList = class(TAutoFreeStringList)
protected
procedure FreeObjects; override;
end;
TObjectStringList = class(TAutoFreeStringList)
protected
procedure FreeObjects; override;
end;
implementation
{ TStructStringList }
procedure TStructStringList.FreeObjects;
var
i: integer;
begin
for i := 0 to Count - 1 do
if Assigned(Objects[i])then
Dispose(Pointer(Objects[i]));//这样释放结构体指针
end;
{ TObjectStringList }
procedure TObjectStringList.FreeObjects;
var
i: integer;
begin
for i := 0 to Count - 1 do
if Assigned(Objects[i])then
Objects[i].Free;//这样释放一个对象
end;
{ TAutoFreeStringList }
destructor TAutoFreeStringList.Destroy;
begin
FreeObjects;
inherited;
end;
end.