我目前正在将现有的 Delphi 5 应用程序移植到 Delphi 2010。
它是加载到 Outlook 中的多线程 DLL(线程由 Outlook 生成的地方)。当通过 Delphi 2010 编译时,每当我关闭表单时,我都会在 TMonitor.Destroy 中遇到“无效指针操作”......就是 system.pas 中的那个。
由于这是一个现有的并且有点复杂的应用程序,我有很多方向要研究,而 delphi 帮助甚至没有记录几乎没有记录这个特定的 TMonitor 类开始(我将它追溯到一些 Allen Bauer 的帖子以及其他信息) ...所以我想我会先问问周围是否有人遇到过这个问题,或者对可能导致这个问题的原因有任何建议。作为记录:我没有在我的代码中明确使用 TMonitor 功能,我们在这里谈论的是 Delphi 5 代码的直接端口。
在问题发生时编辑Callstack:
System.TMonitor.Destroy
System.TObject.Free
Forms.TCustomForm.CMRelease(???)
Controls.TControl.WndProc(???)
Controls.TWinControl.WndProc((45089, 0, 0, 0, 0, 0, 0, 0, 0, 0))
Forms.TCustomForm.WndProc(???)
Controls.TWinControl.MainWndProc(???)
Classes.StdWndProc(15992630,45089,0,0)
Forms.TApplication.ProcessMessage(???)