Недавно я обновил свое приложение с Delphi 2007 до Delphi XE8. В нескольких формах линия Form.showmodel генерирует исключение «с плавающей запятой на ноль». На этих формах нет никаких арифметических операций вообще.Деление с плавающей точкой на ноль на showmodal Delphi XE8
Я попытался выполнить следующий код перед showmodal, который разрешил проблему.
var
CW, SW: word;
function GetX87CW: word;
ASM
FStCW [Result]
End;
Function GetX87SW: word; // Assembler;
ASM
FStSW [Result]
End;
CW := GetX87CW; SW := GetX87SW;
ShowMessage(Format('CW = $%4x, SW = $%4x',[CW,SW]));
Я не сохранил этот код и не прокомментировал весь код и снова перекомпилировал приложение, которое также разрешило проблему.
Теперь я закрыл Delphi и перезапустил XE8 IDE. Я открыл проект, и этот вопрос снова появился, но на этот раз, хотя я написал вышеприведенный код, он все еще бросает исключение.
Есть ли кто-нибудь, кто видел такую проблему, и кто-то может рассказать о возможной причине такой проблемы?
Вы не поставили достаточно информации. Что вы делаете? Такая проблема никогда не появится с простым приложением Delphi. –
Ничто в этой форме не является стандартным или COM или даже Windows API. Он имеет пару Tlistview и TADODataset для доступа к базе данных. Очень странная часть - это работа на Delphi 2007, но не на Delphi XE8. – DivX
без вопросов здесь без [mcve] –