Delphi RAD Studio 课程完成问题

Posted

技术标签:

【中文标题】Delphi RAD Studio 课程完成问题【英文标题】:Delphi RAD Studio class completion issue 【发布时间】:2017-01-13 19:20:45 【问题描述】:

如果我有以下类结构,我无法使用 Embarcadero RAD Studio XE6 调用类完成(通过 Ctrl + Shift + C)。程序运行正常,但 IDE 导致以下错误。想用的话,一定要评论DescriptionArray,有点烦。

因此我想知道,如果有人知道,问题出在哪里,或者我做错了什么。

GT_Class = class
type
  TCustomEnum = (ceValue1, ceValue2, ceValue3, ceValue4);
  TCustomSet = set of TCustomEnum;

const
  DescriptionArray : array[TCustomEnum] of string = ('Description1', 'Description2', 'Description3', 'Description4');
end;

错误信息

【问题讨论】:

我想是因为你的课本来就没有什么可以完成的。 我可以在 XE6 中重现该错误,但在柏林无法重现。尽管在调用类完成时消除了错误,但在 const 前面放置可见性。 当你为这个类调用类完成时你期望发生什么? 这个代码 sn-p 在西雅图对我来说很好用。看起来 IDE 中的一个错误已经解决了。 @StefanGlienke:找到它:“如果成员的声明出现时没有自己的可见性说明符,则该成员具有与其前面的相同的可见性。类声明开头的成员不如果类在 $M+ 状态下编译或派生自在 $M+ 状态下编译的类,则默认发布具有指定可见性;否则,此类成员是公共的。所以确实,如果从 TObject 继承,它是公共的。如果继承自 TPersistent(使用 $M+ 编译),则会发布。 【参考方案1】:

由Stefan Glienke 在comment 中解决。实际上这是 Delphi XE6 中的一个错误,在其他版本中它已得到解决。您需要定义可见性,在这种情况下为 public,即使它不应该是必需的。

GT_Class = class
public
  type
    TCustomEnum = (ceValue1, ceValue2, ceValue3, ceValue4);
    TCustomSet = set of TCustomEnum;

  const
    DescriptionArray : array[TCustomEnum] of string = ('Description1', 'Description2', 'Description3', 'Description4');
end;

【讨论】:

以上是关于Delphi RAD Studio 课程完成问题的主要内容,如果未能解决你的问题,请参考以下文章

Delphi RAD Studio 序列号

delphi XE 和 RAD studio有啥区别

Delphi 2009 RAD Studio - 桌面选择器不工作

RAD Studio最终版合集

RAD Studio 10 自带Demo代码汇总说明

Delphi TADOStoredProc / D6 和 RAD Studio XE2 最近的故障