我有这个代码:
type
TMyClass = class
private
procedure SetKeyValue(const Key: WideString; Value: Widestring);
function GetKeyValue(const Key: WideString): WideString;
public
// this works
property KeyValue[const Index: WideString] : WideString read GetKeyValue write SetKeyValue;
// this does not compile
// [Error]: Incompatible types: 'String' and 'Integer'
property Speed: WideString index 'SPEED' read GetKeyValue write SetKeyValue;
end;
Speed
属性给我错误:
不兼容的类型:"字符串"和"整数"
我需要索引为字符串。是否可以使用字符串值的index
?
4条答案
按热度按时间yeotifhr1#
这是不可能的。索引属性只支持Integer作为索引常量。
参见文档(强调):
索引说明符允许多个属性共享相同的访问方法,但表示不同的值。索引说明符由指令
index
和-2147483647
到2147483647
之间的整数常量组成。如果属性具有索引说明符,则其read
和write
说明符必须列出方法而不是字段。vtwuwzda2#
这在
index
说明符中是不可能的,因为它只支持整数索引。你必须使用一组单独的属性getter/setter方法:8e2ybdfx3#
效果很好
http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Properties_(Delphi)
sh7euo9m4#
你可以这样做