【问题标题】:How to resolve undeclared identifier problems如何解决未声明的标识符问题
【发布时间】:2014-12-16 06:35:00
【问题描述】:

我是 Delphi XE7 的新手,有一个项目并尝试构建它,但它给出了类似的错误

未声明的标识符“图像”

排队..

(TContainedAction(Action).ActionList.Images.Draw(ACanvas, GlyphRect.Left, GlyphRect.Top)

TContainedAction 不包含名为“image”的成员。

请帮我解决问题。

【问题讨论】:

  • 这不是您的实际代码,因为 a) 它不包含任何会产生 TContainedAction does not contain 错误的内容,并且 b) 无论如何它都不会走那么远,因为它的括号不匹配.如果您需要代码方面的帮助,请发布您的真实代码并附上足够的周边内容,以便我们有一些上下文和变量/类型声明。

标签: delphi delphi-xe7


【解决方案1】:

错误很简单,可以理解。您的代码正在搜索的范围内未定义任何变量或成员。

未声明的标识符“图片”

TContainedAction.ActionList 的类型为 TContainedActionList。而TContainedActionList 没有名为Images 的成员。因此错误。

您需要将TContainedActionList 引用向上转换为具有您要查找的成员的类型。我不知道那种类型是什么,因为除了问题中的代码之外,我看不到您的任何代码。也许投到TActionList 就足够了。

您使用未经检查的施法是在玩火。改用运行时检查强制转换,以便您找出是否弄错了。

uses
  System.Actions, Vcl.ActnList;
....
var
  ActionList: TActionList;
....
ActionList := (Action as TContainedAction).ActionList as TActionList;
// now you can refer to ActionList.Images;

有一点不清楚的是为什么你需要投射Action。由于我们不知道Action 是什么,因此我们无法提供建议,只能评论所有这些选角感觉很奇怪。

TContainedAction 不包含名为“image”的成员

此错误消息与问题中的任何代码都不匹配。

【讨论】:

  • 你能再探索一下吗?
  • 我想我已经对您提出的问题进行了全面的处理。你明白必须先声明变量才能使用它们吗?
猜你喜欢
  • 2015-07-20
  • 2012-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-25
  • 1970-01-01
  • 2015-12-18
相关资源
最近更新 更多