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

时间:2015-05-09 17:49:00

标签: delphi

我在Delphi XE2 IDE中遇到了一个非常奇怪的问题。

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

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; 

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

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错误,说“未声明的标识符:'信息'”,当我按住CTRL + CLICK TReceiveDataCommand将我带到声明时,IDE跳转到包含包源文件中的其他位置。

我在工作的机器上运行的代码非常相同,这样可以正常工作。我想知道是否有一些挥之不去的BPL徘徊在某处,但我已经清楚了。

当尝试跳转到TReceiveDataCommand类源时,IDE将我带到错误的位置似乎很奇怪。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

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

逻辑上的结论是编译器正在查找过时的.dcp文件。