【发布时间】:2010-11-04 10:10:34
【问题描述】:
我知道该怎么做,但又忘记了... 很烦人,因为我正在处理一个包含 XML 文件列表的类,而现在我只想使用 for-in 循环遍历所有此列表中的文件。这是我现在的课程:
type
TXmlFileList = class( TInterfacedObject )
private
type
TItem = class( TInterfacedObject )
strict private
FCaption: string;
protected
constructor Create( const ACaption: string; const AXML: WideString );
public
destructor Destroy; override;
property Caption: string read FCaption;
end;
strict private
FXmlFiles: array of TXmlFileList.TItem;
strict protected
function GetXmlFile( index: Integer ): TXmlFileList.TItem;
public
constructor Create( );
destructor Destroy; override;
function Add( const ACaption: string; const AXML: WideString ): Integer; overload;
function Add( const AFilename: string ): Integer; overload;
function Count: Integer;
procedure Clear;
property XmlFile[ index: Integer ]: TXmlFileList.TItem read GetXmlFile; default;
end;
看起来很有趣? :-) 我知道,但我想向外界隐藏 TXmlFile 类的定义。基本上,TXmlFileList 类允许我简单地引用 XmlFileList[I] 来获取位置 I 的文件。效果很好。
但是现在我想循环遍历 TXmlFileList.TItem 元素,所以我必须公开 TXmlFileList.TItem 类。但这还不够。它在 TXmlFileList 类中也需要一个枚举器!
如何创建该枚举器?
您可能想知道我为什么要使用这种复杂的构造。好吧,它可能很复杂,但它会被其他一些开发人员使用,我不想提供比他们需要的更多的方法。这样,我只给他们方法“Add”、“Clear”和“Count”来循环遍历列表,以及在 TItem 本身上定义的任何属性。他们不需要更多,尽管我稍后可能会添加更多功能......
【问题讨论】:
标签: delphi winapi delphi-2007 enumeration