unit cls_employee;
interface
uses
Classes,SysUtils;
type
PEmployeeInfo = ^TEmployeeInfo;
TEmployeeInfo = record //员工信息
name : string;
age : integer;
birthday : TdateTime;
end;
//员工类
TEmployee = class
FEmployeeInfo: TEmployeeInfo;
public
constructor create(AEmployeeInfo: TEmployeeInfo);
end;
//员工容器类
TEmployees = class
private
FList : TList;
function Getitem(index: integer): TEmployee;
public
constructor create;
function count: integer;
function indexof(AEmployeeInfo: TEmployeeInfo): integer;
function add(AEmployeeInfo: TEmployeeInfo): integer; //添加员工
function delete(AEmployeeInfo: TEmployeeInfo): boolean; //删除员工
destructor destroy;override;
//published 不屏蔽 发布属性有问题
property item[index: integer]: TEmployee read Getitem;default;
end;
var
gEmployees: TEmployees;
implementation
{ TEmployee }
constructor TEmployee.create(AEmployeeInfo: TEmployeeInfo);
begin
FEmployeeInfo := AEmployeeInfo;
end;
{ TEmployees }
function TEmployees.count: integer;
begin
result:= FList.Count;
end;
constructor TEmployees.create;
begin
FList:= TList.Create;
end;
function TEmployees.delete(AEmployeeInfo: TEmployeeInfo): boolean;
var
i: integer;
begin
result:=false;
i:=indexof(AEmployeeInfo);
if i <> -1 then
begin
item[i].Free;
FList.Delete(i);
result:= true;
end;
end;
destructor TEmployees.destroy;
var
i: integer;
begin
for i := 0 to FList.Count - 1 do item[i].Free;
freeAndNil(FList);
inherited;
end;
function TEmployees.Getitem(index: integer): TEmployee;
begin
result:= FList[index];
end;
function TEmployees.indexof(AEmployeeInfo: TEmployeeInfo): integer;
var
i: integer;
begin
result:= -1;
for I := 0 to FList.Count - 1 do
begin
if item[i].FEmployeeInfo.name=AEmployeeInfo.name then
result:=i;
end;
end;
function TEmployees.add(AEmployeeInfo: TEmployeeInfo): integer;
begin
result:=-1;
if indexof(AEmployeeInfo)=-1 then
begin
FList.Add(TEmployee.create(AEmployeeInfo));
result:= count-1;
end;
end;
end.