我在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将我带到错误的位置似乎很奇怪。
有什么建议吗?
答案 0 :(得分:1)
TReceiveCommand
类型在不同的包中定义。编译器使用.dcp文件来解析该不同包中的名称。如果未识别Info
,则显然编译器正在查找的.dcp文件与问题中的源代码不匹配。
逻辑上的结论是编译器正在查找过时的.dcp文件。