Delphi中存储的关键字

时间:2010-01-15 14:14:42

标签: delphi

Delphi在定义属性时允许存储关键字,如下所示:

property Fields: TIndexDefs read FFields write SetFields stored FieldsStored;

关键字的目的是什么?它的作用是什么?

3 个答案:

答案 0 :(得分:23)

从我的Delphi 7帮助文件:

  

可选存储,默认和   调用nodefault指令   存储说明符。他们没有   对程序行为的影响,但是   控制是否保存   表格中已发布属性的值   文件。

     

必须遵循stored指令   by True,False,布尔名称   字段,或无参数的名称   返回布尔值的方法。   例如,

property Name: TComponentName read FName write SetName stored False;
     

如果某个属性没有存储指令,   它被视为存储为True   指定。

这听起来像是控制是否在表单的.DFM文件中存储与组件相关的属性。 (只是猜测)

答案 1 :(得分:6)

此关键字确定是否应将属性值保存在表单文件中;默认情况下为true。例如,避免在.dfm文件中保存大块二进制信息(例如,必须仅在运行时读取其内容的图像组件)可能很有用。

答案 2 :(得分:0)

stored指令采用布尔值:一种返回布尔结果,布尔类型字段引用或布尔类型常量表达式的方法。该属性的RTTI记录字段偏移量,方法引用或常数值,而Delphi的IDE使用此信息来决定是否从.dfm文件中省略该属性。

IDE会调用该方法,检查字段的值或使用常量布尔值,如果该值为False,则该属性不会保存到.dfm文件中。如果存储的值为True,则会发生默认行为,即,如果属性的值与默认值不同,则会存储该属性。

提示和技巧

  • 存储的指令经常被误解。将存储设置为True不会强制Delphi将属性值存储在.dfm文件中。 True是存储指令的默认值。相反,您所能做的就是通过将storage设置为False来从.dfm文件中忽略该属性。

  • 您可以在任何访问级别使用带有属性的存储,但这仅对已发布的属性有意义

  • 如果使用方法名称,则该方法可以是静态或虚拟的,但不能是动态的或消息处理程序。

  • 字段引用可以是字段名称,记录成员或具有恒定索引的数组元素。字段引用必须具有布尔类型。

参考:https://www.oreilly.com/library/view/delphi-in-a/1565926595/re307.html