我在Delphi XE2集成开发环境中遇到了一个非常奇怪的问题。
在一个包中,我声明了以下类:
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错误,说“未声明的标识符:'Info'”,当我在TReceiveDataCommand上执行CTRL+CLICK命令将我带到声明时,集成开发环境会跳转到包含包的源文件中的另一个位置。
我在我的机器上运行着同样的代码,而且工作正常。我想知道是否有一些徘徊的BPL潜伏在某个地方,但我已经很好地清除了。
在尝试跳转到TReceiveDataCommand类源代码时,集成开发环境会把我带到错误的位置,这似乎很奇怪。
有什么建议吗?
发布于 2015-05-10 03:54:55
TReceiveCommand类型在不同的包中定义。编译器使用.dcp文件来解析不同包中的名称。如果无法识别Info,则很明显编译器找到的.dcp文件与问题中的源代码不匹配。
逻辑结论是编译器发现了一个过期的.dcp文件。
发布于 2015-05-10 17:25:34
只有当我从Xe6迁移到xe7时,才会发生这种情况。它在xe6 stuff和xe7中都有链接。因为项目转换/迁移没有完成其工作。我会检查dproj文件中的路径。
现在是一个非常明显的问题--你重建了吗?
https://stackoverflow.com/questions/30143192
复制相似问题