2012-05-29 128 views
14

我有一個類,其中包含TStringList內的多個文件名。我可以使用索引來訪問一個特定的文件名:如何實現索引[]默認屬性

myclass.stringlistclass[index] 

但我怎麼可以使用下面的語法得到一個文件名?

myclass[index] 

是否有我可以實現以實現此功能的屬性?

回答

25
private 
    function GetColumnValue(const ColumnName: string): string; overload; 
    function GetColumnValue(Index: Integer): string; overload; 
    procedure SetColumnValue(Index: integer; const Value: string); 
public 
    property Values[const ColumnName: string]: string read GetColumnValue; default; 
    property Values[ColumnIndex: integer]: string read GetColumnValue write SetColumnValue; default; 
end; 

這意味着:

  • 你可以有多個default indexor性能
  • 多indexor屬性可以有相同的名字例如Values
  • 屬性獲取器可能是過載(,即具有相同的名稱)例如,GetColumnValue
  • 德爾福將通過解析類型簽名
+3

您還需要''FilesCount'屬性'getFilesCount'方法 – teran

+1

@teran取決於代碼邏輯,可以接受爲不存在的索引返回空值。 –

+0

@ EugeneMayevski'EldoSCorp確實,我已經完成了這個工作,如果索引不存在,傳遞空字符串。 –

11

在索引屬性中使用「default」關鍵字。每個類可以有一個默認屬性。

+1

重載一個例子將是有益的 – opc0de

+1

其實,這是可以有每班多'default'性能。 [示例聲明](http://pastebin.com/tbXS6BXX) – afrazier

+0

@afrazier是語言最近的一些新增內容嗎?以前似乎只有一個默認屬性。 –