首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delphi - E2003未声明标识符问题

问Delphi - E2003未声明标识符问题
EN

Stack Overflow用户
提问于 2015-05-10 01:49:00
回答 2查看 4.8K关注 0票数 3

我在Delphi XE2集成开发环境中遇到了一个非常奇怪的问题。

在一个包中,我声明了以下类:

代码语言:javascript
复制
TCommandInfo = class
    private
        fParameters : TCommandParameters;
        // other fields...
    public
        property Parameters : TCommandParameters read fParameters;
        // other properties...
end;

TReceiveCommand = class(TCommand)
    // other fields and properties
    private
        fInfo : TCommandInfo;

    public
        property Info : TCommandInfo read fInfo;

end;


TReceiveErrorCommand = class(TReceiveCommand);

TReceiveDataCommand = class(TReceiveCommand)
    // procedures and properties defined, etc.
end; 

现在在一个完全不同的包中,依赖于上面的包,我有这个成员函数:

代码语言:javascript
复制
procedure DoDataCommand;
var
    cmd : TReceiveDataCommand;
    success : Boolean;
    params : TCommandParameters;
begin
    cmd := TReceiveDataCommand.Create;
    success := cmd.Initialize;

    if success then begin
        // #### ERROR HERE ####
        params := cmd.Info.Parameters;
    end;
end;

我所看到的是,当我试图编译依赖包时,我得到了一个E2003错误,说“未声明的标识符:'Info'”,当我在TReceiveDataCommand上执行CTRL+CLICK命令将我带到声明时,集成开发环境会跳转到包含包的源文件中的另一个位置。

我在我的机器上运行着同样的代码,而且工作正常。我想知道是否有一些徘徊的BPL潜伏在某个地方,但我已经很好地清除了。

在尝试跳转到TReceiveDataCommand类源代码时,集成开发环境会把我带到错误的位置,这似乎很奇怪。

有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2015-05-10 03:54:55

TReceiveCommand类型在不同的包中定义。编译器使用.dcp文件来解析不同包中的名称。如果无法识别Info,则很明显编译器找到的.dcp文件与问题中的源代码不匹配。

逻辑结论是编译器发现了一个过期的.dcp文件。

票数 1
EN

Stack Overflow用户

发布于 2015-05-10 17:25:34

只有当我从Xe6迁移到xe7时,才会发生这种情况。它在xe6 stuff和xe7中都有链接。因为项目转换/迁移没有完成其工作。我会检查dproj文件中的路径。

现在是一个非常明显的问题--你重建了吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30143192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档