我正在将一些遗留的第三方组件从Delphi6源码升级到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是一个未声明的标识符。现在我可以(大概)通过将嵌套函数拉出到相同的级别来解决这个问题,但是有没有可以设置的编译器选项来防止这种情况发生?这是最近发生的变化吗?还有没有人遇到过这个问题?
谢谢
发布于 2011-11-18 15:43:17
为了在XE2中编译你的代码,只需删除DoSomethingelse定义中的class关键字,即使这段代码在旧版本的delphi中编译(我在Delphi5,7和2007中测试过你的代码),我也看不出用class关键字声明嵌入式(内部)过程或函数有什么(或区别)。
https://stackoverflow.com/questions/8178142
复制相似问题