8288分类目录 8288分类目录 8288分类目录
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

让自己的列表类支持遍历

来源:本站原创 浏览:137次 时间:2021-09-09
让自己的列表类支持遍历    


一个普通的数字列表类(TNumList), 还没有支持遍历:



unit NumList;interfaceuses SysUtils;type  TNumList = class  private    FCount: Integer;    FNumArray: array of Double;    function GetNum(aIndex: Integer): Double;    procedure SetNum(aIndex: Integer; aNum: Double);  public    constructor Create(aCount: Integer);    property Count: Integer read FCount;    property Nums[Index: Integer]: Double read GetNum write SetNum; default;  end;implementation{ TNumList }constructor TNumList.Create(aCount: Integer);begin  inherited Create;  FCount := aCount;  SetLength(FNumArray, FCount);end;function TNumList.GetNum(aIndex: Integer): Double;begin  if (aIndex < 0) or (aIndex >= FCount) then raise Exception.Create('索引越界');  Result := FNumArray[aIndex];end;procedure TNumList.SetNum(aIndex: Integer; aNum: Double);begin  if aIndex >= FCount then  begin    FCount := aIndex + 1;    SetLength(FNumArray, FCount);  end;  FNumArray[aIndex] := aNum;end;end. //end//调用测试:uses NumList;procedure TForm1.Button1Click(Sender: TObject);var  nList: TNumList;  i: Integer;begin  nList := TNumList.Create(5);  for i := 0 to nList.Count - 1 do //赋值  begin    nList[i] := Random(1000) / 100;  end;  Memo1.Clear;  for i := 0 to nList.Count - 1 do //取值  begin    Memo1.Lines.Add(FloatToStr(nList[i]));  end;  nList.Free;end;


支持遍历的 TNumList 类:



unit NumList;interfaceuses SysUtils;type  TNumList = class;  TNumEnumerator = class  private    FIndex: Integer;    FNumList: TNumList;  public    constructor Create(aNumList: TNumList);    function GetCurrent: Double;    function MoveNext: Boolean;    property Current: Double read GetCurrent;  end;  TNumList = class  private    FCount: Integer;    FNumArray: array of Double;    function GetNum(aIndex: Integer): Double;    procedure SetNum(aIndex: Integer; aNum: Double);  public    constructor Create(aCount: Integer);    function GetEnumerator: TNumEnumerator; //!    property Count: Integer read FCount;    property Nums[Index: Integer]: Double read GetNum write SetNum; default;  end;implementation{ TNumList }constructor TNumList.Create(aCount: Integer);begin  inherited Create;  FCount := aCount;  SetLength(FNumArray, FCount);end;function TNumList.GetEnumerator: TNumEnumerator;begin  Result := TNumEnumerator.Create(Self);end;function TNumList.GetNum(aIndex: Integer): Double;begin  if (aIndex < 0) or (aIndex >= FCoun���޳���,һ�޳���t) then raise Exception.Create('索引越界'');  Result := FNumArray[aIndex];end;procedure TNumList.SetNum(aIndex: Integer; aNum: Double);begin  if aIndex >= FCount then  begin    FCount := aIndex + 1;    SetLength(FNumArray, FCount);  end;  FNumArray[aIndex] := aNum;end;{ TNumEnumerator }constructor TNumEnumerator.Create(aNumList: TNumList);begin  inherited Create;  FIndex := -1;  FNumList := aNumList;end;function TNumEnumerator.GetCurrent: Double;begin  Result := FNumList[FIndex];end;function TNumEnumerator.MoveNext: Boolean;begin  Result := FIndex < FNumList.Count - 1;  if Result then Inc(FIndex);end;end. //end//调用测试uses NumList;procedure TForm1.Button1Click(Sender: TObject);var  nList: TNumList;  i: Integer;  num: Double;begin  nList := TNumList.Create(5);  for i := 0 to nList.Count - 1 do //赋值  begin    nList[i] := Random(1000) / 100;  end;  Memo1.Clear;  for num in nList do //遍历  begin    Memo1.Lines.Add(FloatToStr(num));  end;  nList.Free;end;


  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net