Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Обработка ошибок парсинга данных в Delphi XE под Windows 8

Delphi , ОС и Железо , Windows

В последнее время разработчики, использующие Delphi XE для создания приложений, столкнулись с необычной проблемой при работе под операционной системой Windows 8. Проблема заключается в спорадических сбоях при попытке преобразования строки в числовой формат с помощью метода Double.TryParse из .NET Framework версии 3.5. Эти сбои происходили на свежих установках Windows 8 и могли повторяться до 10 раз, после чего приложение начинало работать корректно.

Исходная проблема

Приложение, написанное на Delphi XE (Win32) и использующее COM-интероперабельность для вызовов .NET сборок, внезапно начинало "зависать" или "прекращать работу" без выдачи каких-либо ошибок или логирования. После детального анализа с помощью удаленной отладки, было выявлено, что проблема связана с методом Double.TryParse, который вызывался при попытке преобразования нечисловой строки.

Попытки использовать Double.Parse внутри блока Try/Catch также не увенчались успехом. Примечательно, что аналогичные сборки, написанные на Delphi Prism, а также тестовые сборки на C# с использованием Visual Studio 2010, воспроизводили данную ошибку. В то же время, использование .NET Framework версии 4 не вызывало проблем, однако из-за отсутствия поддержки Oracle, переход на новую версию был невозможен.

Анализ проблемы

После дополнительного исследования было обнаружено, что на машинах с Windows 8 отсутствуют какие-либо изменения в настройках культуры, так как попытки использовать CultureInfo не привели к решению проблемы. Также было замечено, что вызов C# сборки из другого C# проекта работал корректно, что указывало на проблему в сочетании Delphi (Win32), .NET 3.5, COM InterOp и Windows 8.

Возможные решения

Обновление .NET runtime

Проверка установки .NET 3.5 runtime на машинах с Windows 8 показала, что она была выполнена корректно. Однако, рекомендуется убедиться, что приложение запускается именно под нужной версией .NET runtime, а не эмулируется под .NET 4.0.

Установка приложения в 32-битное пространство

Также можно было бы попробовать заставить приложение запускаться в 32-битном пространстве, если проблема связана с режимом выполнения.

Изменение конфигурации AppDomain

Возможно, можно было бы внести изменения в конфигурацию AppDomain, которая используется для запуска .NET кода в Delphi, используя, например, библиотеку JCL.

Изменение настроек точности числа с плавающей запятой

С дельфийской стороны можно было бы изменить установки точности числа с плавающей запятой, чтобы избежать исключений, связанных с переполнением.

Примерный код на Object Pascal для Delphi:

var
  lSave: Word;
begin
  lSave := Get8087CW;
  Set8087CW($037F);
  // Ваш вызов метода .NET
  Set8087CW(lSave);
end;

Подтвержденное решение

Проблема была решена автоматически благодаря обновлениям для Windows 8, доступным через Windows Update. Разработчикам рекомендуется установить последние обновления для устранения данной проблемы.

Заключение

Эта статья описывает проблему, с которой столкнулись разработчики при работе с Delphi XE и .NET Framework 3.5 под Windows 8, и предлагает потенциальные решения. Важно помнить о возможности обновления .NET runtime, проверки битовности приложения и конфигурации AppDomain, а также корректировки настроек точности чисел с плавающей запятой. В случае, если проблема сохраняется, рекомендуется обратиться к последним обновлениям Windows.

Создано по материалам из источника по ссылке.

Разработчики сталкиваются с ошибками при использовании Delphi XE и .NET Framework 3.5 в операционной системе Windows 8, связанными с обработкой ошибок парсинга данных.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Windows ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 12:15:41/0.0037319660186768/0