【发布时间】:2019-12-22 16:21:09
【问题描述】:
Delphi RIO - 定义了一个名为 TBizObj 的类。其中一项属性与 DUNS 编号有关。 DUNS 编号有时会在左侧填充 '0' 以精确到 9 个字符长,因此我有一个名为 SiteDUNS9 的属性(基于 fSiteDUNS9)。调用程序设置 SiteDUNS9 属性,但调用者不必担心 DUNS 是否为 9 个字符,我将在 getter/setter 属性中处理它。
当我定义我的属性来调用这个函数时,我得到一个错误“不兼容的类型”。一切都是字符串......不涉及其他类型。这是代码的相关部分:
type
TBizObj = class(TObject)
private
...
fSiteDUNS9: string;
...
function FixDunsLength9(DUNS:string) :string;
published
...
property SiteDUNS9: string read fSiteDUNS9 write FixDunsLength9;
end; // End of the tBizObj Class;
implementation
...
function TBizObj.FixDunsLength9(DUNS:string):string;
begin
// This is a setter function for the DUNS9 routine
result := glib_LeftPad(DUNS, 9, '0');
end;
我遵循了 Embaracadero 网站上的示例,但仍然无法确定我做错了什么。 http://docwiki.embarcadero.com/RADStudio/Rio/en/Properties_(Delphi)
如果我将属性定义更改为
property SiteDUNS9: string read fSiteDUNS9 write fSiteDUNS9;
然后我的程序编译正确。
【问题讨论】:
-
setter 需要是一个接受字符串参数并且不返回值的过程。在文档中查找示例。
-
@David - 我做了,但没听懂... :( 作为答案提交,我会接受。
-
procedure FixDunsLength9(const DUNS: string);,但你最好调用像SetSiteDUNS9这样的setter。
标签: delphi properties setter