【发布时间】:2011-11-18 05:25:29
【问题描述】:
我正在将一些遗留的第 3 方组件从 Delphi 6 源升级到 XE2。
第 3 方源在类过程中嵌套了类函数。模拟将失败的确切工作副本:
type
TMyClass1 = class
public
class procedure DoSomething;
end;
{ TMyClass1 }
class procedure TMyClass1.DoSomething;
class function DoSomethingelse: boolean;
begin
result := false;
end;
begin
end;
试图编译它会给出一个关于 doSomethingelse 是未声明标识符的错误。现在我可以(大概)通过将嵌套函数拉到同一级别来解决这个问题,但是我可以设置一个编译器选项来防止这种情况吗?这是最近发生变化的事情吗?有没有其他人遇到过这个问题?
谢谢
【问题讨论】:
-
也许嵌套函数旁边不应有“类”字样。如果你想把它拉起来 - 用“class”关键字拉它并添加到私有部分。
-
当我迁移到 XE2 时,我的代码库中的一些第 3 方代码遇到了这个问题。最好的解决方案是删除内部的类。我敢打赌这种变化是在 XE2 上,上面的代码适用于所有早期版本。
-
@DavidHeffernan 此代码在 Delphi XE 中也失败,因此在 Delphi 2007 和 XE 之间的某些版本中进行了更改。
-
@RRUZ 我从 2010 年迁移到 XE2 时遇到了这个问题,所以我猜当时是 XE。我假设 XE2 是发生更大动荡的地方。
标签: delphi delphi-xe2