TList使用-简例

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.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值