这是一个单位的最小类
TUnit = CLASS(TPersistent) //单位类 ,单位的最小单位
private
FUnitID:INTEGER; //单位ID
FUnitName:STRING; //单位名称
function GetUnitID:integer;
procedure SetUnitID(value:integer);
function GetUnitName:string;
procedure SetUnitName(value:string);
protected public
property UnitID:integer read GetUnitID write SetUnitID ; //单位ID
property UnitName:String read GetUnitName write SetUnitName; //单位名称
end;
下面是一个单位的集合类 TUnitSet = CLASS(TPersistent) //单位类集
private
FUnits:array of TUnit; //单位集
function GetCount:integer;
function GetUnit(Index :integer):TUnit;
procedure SetUnit(Index :integer;value:TUnit);
protected public
property Count:integer read GetCount ; //单位个数
property Units[Index :integer]:TUnit read GetUnit write SetUnit; //获得一个单位
function Add(value:TUnit):integer; //怎加一个单位,返回单位的总个数
end;
请问各位大侠,这样写存在什么问题?如何改进?
如果要增加一个单位在 function Add(value:TUnit):integer; 中医该怎样实现才能保证安全的神情空间存储一个单位类。
谢谢!!!
TUnit = CLASS(TPersistent) //单位类 ,单位的最小单位
private
FUnitID:INTEGER; //单位ID
FUnitName:STRING; //单位名称
function GetUnitID:integer;
procedure SetUnitID(value:integer);
function GetUnitName:string;
procedure SetUnitName(value:string);
protected public
property UnitID:integer read GetUnitID write SetUnitID ; //单位ID
property UnitName:String read GetUnitName write SetUnitName; //单位名称
end;
下面是一个单位的集合类 TUnitSet = CLASS(TPersistent) //单位类集
private
FUnits:array of TUnit; //单位集
function GetCount:integer;
function GetUnit(Index :integer):TUnit;
procedure SetUnit(Index :integer;value:TUnit);
protected public
property Count:integer read GetCount ; //单位个数
property Units[Index :integer]:TUnit read GetUnit write SetUnit; //获得一个单位
function Add(value:TUnit):integer; //怎加一个单位,返回单位的总个数
end;
请问各位大侠,这样写存在什么问题?如何改进?
如果要增加一个单位在 function Add(value:TUnit):integer; 中医该怎样实现才能保证安全的神情空间存储一个单位类。
谢谢!!!
但需要考虑Unit类的释放也就是说,FUnits数组中的TUnit类什么时候释放,在调用端释放还是在TUnitSet类中释放。
这就需要根据你的业务逻辑来考虑了,但建议TUnitSet单元最好还是增加Destroy函数,用来循环
是否TUnit数组中的unit类实例。
改成 FUnits: TObjectList;function Add(value:TUnit):integer
begin
Result := -1;
if Assigned(value) then
Result := FUnits.Add(Value);
end;