我正在将一些传统的第三方组件从Delphi 6源升级到XE2。
第三方源在类过程中具有嵌套的类函数。模拟确实失败的工作副本:
type
TMyClass1 = class
public
class procedure DoSomething;
end;
{ TMyClass1 }
class procedure TMyClass1.DoSomething;
class function DoSomethingelse: boolean;
begin
result := false;
end;
begin
end;
尝试编译这会产生一个关于doSomethingelse是未声明的标识符的错误。现在我可以(大概)通过将嵌套函数拉出到同一级别来解决这个问题,但是我可以设置一个编译器选项来防止这种情况吗?这是最近改变了吗?还有其他人遇到过这个问题吗?
由于
答案 0 :(得分:6)
为了在XE2中编译代码,只需删除class
定义的DoSomethingelse
关键字,即使此代码在旧版本的delphi中编译(我在Delphi 5,7中测试了您的代码, 2007)我没有看到使用class
关键字声明嵌入(内部)过程或函数的要点(或差异)。