В настоящее время я работаю над переносом существующего приложения Delphi 5 на Delphi 2010.
Это многопоточная DLL (потоки создаются Outlook), загружаемая в Outlook. При компиляции через Delphi 2010 всякий раз, когда я закрываю форму, я сталкиваюсь с «недопустимой операцией указателя» внутри TMonitor.Destroy ... то есть той, что находится в system.pas.
Поскольку это уже существующее и довольно сложное приложение, у меня есть множество указаний, которые нужно изучить, а справочная система delphi даже не документирует и почти не документирует этот конкретный класс TMonitor для начнем с (я проследил это до некоторых сообщений Аллена Бауэра с дополнительной информацией) ... так что я решил сначала спросить, сталкивался ли кто-нибудь с этим раньше или есть какие-либо предложения о том, что может вызвать эту проблему. Для справки: я не использую функцию TMonitor явно в своем коде, здесь мы говорим о прямом переносе кода Delphi 5.
Изменить стек вызовов в момент возникновения проблемы:
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(???)