介绍
在 Windows 11 22H2 中,在特定应用程序中只需按 [Half/Full] 键即可崩溃看起来。
尤其是浮点异常使应该使用的应用程序崩溃许多 Delphi 应用程序都属于这一类。
从 Windows 10 开始,IME 经常出现奇怪的行为,所以我使用了[以前のバージョンの Microsoft IME を使う],一开始并没有意识到这个问题,但是我从一条推文中了解到文本编辑器“Mery”的作者 Haijin Boys。
“TeraPad”似乎也出现了同样的问题。
解决方法
似乎有一些解决方法。
■ 使用早期版本的 Microsoft IME
从[設定] 到[時刻と言語 > 言語と地域 > Microsoft IME > 全般],[使用以前版本的 Microsoft IME]的上至
■ 不要发送可选的诊断数据
从[設定] 到[プライバシーとセキュリティ > 診断とフィードバック],[发送可选的诊断数据]的离开至
■ 不要在应用程序端使用浮点异常
在 Delphi 中,您可以使用以下代码避免浮点异常:
uses
..., System.Math;
...
SetExceptionMask(exAllArithmeticExceptions);
在旧的 Delphi 中,代码如下所示:
uses
..., Math;
...
SetExceptionMask([exInvalidOp..exPrecision]);
ARM系列CPU不支持浮点异常,但是FireMonkey应用默认不使用浮点异常,所以不会出现这个问题。
所以它发生在 VCL 应用程序中,但不仅仅是那些用最近的 Delphi 编译的应用程序,它也发生在旧的 Delphi 编译的应用程序中。
任何使用浮点异常的语言都会有同样的问题。另一方面,这也意味着只要使用新的 IME,就不能使用浮点异常。
SetExceptionMask() 在 Delphi 6 及更高版本中实现。遇到问题的早期版本的 Delphi 应用程序应该使用 Set8087CW() 来完成等效操作。
也可以看看:
综上所述
应用程序崩溃是因为“在 Windows 11 (22H2) 上使用新 IME 并发送可选诊断数据时,通过按 [半角/全角] 键打开 IME 时出现浮点异常。do”这似乎是微软 IME 的一个 bug。
微软的反馈中心也有这个问题。
如果您在此问题上遇到问题,请投票。
也可以看看:
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308628451.html