如何使“myProc = procedure of object”过时?

7

我正在使用Delphi Tokyo Release 2,我有以下声明:

type 
  FIRMessagingConnectCompletion = procedure of object;

我会尝试将其标记为“已弃用”。我尝试了这样做:
type
  FIRMessagingConnectCompletion = procedure of object deprecated 'Please listen for the FIRMessagingConnectionStateChangedNotification NSNotification instead.';

但是出现了错误 "E1030 无效的编译指令: 'DEPRECATED'"。我错过了什么吗?


另一种方法可能是发出自己的 {$MESSAGE WARN}。但如果想要找到特定的警告类型(因为它是 W1054 类),这种方法就不好用了。 - Victoria
1个回答

7

看起来编译器不允许这样做。但有一个变通方法:

type
    TProc = procedure of object;
    TProc1 = TProc deprecated 'test';

更新:
根据评论所指出的,这个变体会更好些。

type
    __InternalFakeProcType__ = procedure of object;
    TProc = __InternalFakeProcType__ deprecated 'test';

2
@Sertac:那么就这样做:TXyz345981345 = procedure of object; TProc = TXyz345981345 deprecated 'Use something else';。人们将使用TProc而不是其他的。<g> - Rudy Velthuis
将原始的TProc声明移动到另一个单元(比如UnitX)。然后将声明更改为TProc = UnitX.TProc deprecated 'test'; - Uwe Raabe
哦!我希望我早点知道。 <g> 无论如何,在当前的状态下,这个答案一点也没有帮助。我希望@Rudy所评论的意图是如此明显,以至于人们正在投赞成票。暂时从我这里扣掉一个赞。 - Sertac Akyuz
作为一条规则,没有一种语言可以完全满足人们的需求。此外,编译器也会有漏洞。但这并不是不做任何事情的理由。我的决定肯定不完美,但至少提供了一些解决问题的途径。 - Vasek
1
@Vasek - 我看不到解决方案。正如我所说,编译器没有警告关于你在答案中使用的 TProc。 - Sertac Akyuz
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接