Ошибка runtime error 217 at 004bb10d autodata как исправить

в Ошибки ПК 23,905 Просмотров Ошибки времени выполнения, одни из тех проблем, которые преследуют пользователей компьютеров с Windows-based операционными системами. Исправление этих проблем зависит от конкретной ошибки во время выполнения, на что указывает количество и любой текст, который сопровождает сообщение об ошибке. p, blockquote 1,0,0,0,0 –> p, blockquote 2,0,0,0,0 –> p, blockquote 3,0,0,0,0 –> Что …

в Ошибки ПК 23,905 Просмотров

Ошибки времени выполнения, одни из тех проблем, которые преследуют пользователей компьютеров с Windows-based операционными системами. Исправление этих проблем зависит от конкретной ошибки во время выполнения, на что указывает количество и любой текст, который сопровождает сообщение об ошибке.

p, blockquote 1,0,0,0,0 –>

p, blockquote 2,0,0,0,0 –>

p, blockquote 3,0,0,0,0 –>

Что такое Runtime Error 217?

p, blockquote 4,0,0,0,0 –>

Runtime Error 217 может возникать по одной из множества причин. Эти причины включают в себя:

p, blockquote 5,0,1,0,0 –>

  • Отказ зарегистрировать dll в процессе установки приложения.
  • Наличие вирусов на компьютере.
  • На вашем компьютере установлены неправильные региональные настройки.
  • На вашем компьютере есть устаревший файл msvcrt.dll .

на вашем компьютере.

p, blockquote 6,0,0,0,0 –>

  • Сломанные или отсутствующие файлы реестра.
  • Наличие устаревшего MS DCOM файла на вашем компьютере.
  • Отсутствует stdole32.tlb-файл на вашем компьютере.

Как исправить Runtime Error 217: неисправные установки

p, blockquote 7,0,0,0,0 –>

Если вы подозреваете, что ошибка runtime error 217 возникает из-за неправильной установки, просто переустановите приложение. Однако, если ваш источник для приложения поврежден, то Вам необходимо получить новый диск или скачать новую версию приложения перед его попыткой установки. Как только приложение будет установлено правильно, ошибка runtime больше не должна возникать.

p, blockquote 8,0,0,0,0 –>

Как исправить Runtime Error 217: вирусная инфекция

p, blockquote 9,0,0,0,0 –>

Когда вирус заражает компьютер, может возникнуть ряд проблем, в том числе ошибки времени выполнения. Если ошибка runtime error 217 появляется из-за вирусной инфекции, просто просканируйте компьютер с помощью современных антивирусных приложений, чтобы её удалить.

p, blockquote 10,1,0,0,0 –>

Как исправить Runtime Error 217: неправильные региональные настройки

p, blockquote 11,0,0,0,0 –>

Если настройки Вашего компьютера неверны, может появится ошибка Runtime Error 217. Убедитесь, что настройки даты на вашем компьютере совпадают для страны, где вы находитесь.

p, blockquote 12,0,0,0,0 –>

Как исправить Runtime Error 217: устаревшие файлы msvcrt.dll

p, blockquote 13,0,0,0,0 –>

Если ошибка происходит из-за устаревшего файла msvcrt.dll, Вам необходимо заменить файл при обновлении операционной системы. Вы можете сделать это, посетив веб-сайт корпорации Майкрософт. Пока вы там находитесь, проверьте все существующие исправления, которые были выпущены для вашей версии Windows.

p, blockquote 14,0,0,0,0 –>

Как исправить Runtime Error 217: устаревший файл MS DCOM

p, blockquote 15,0,0,1,0 –>

Если ошибка появляется из-за устаревшего файла MS DCOM, получите последние обновления для вашей операционной системы через веб-сайт Microsoft.

p, blockquote 16,0,0,0,0 –>

Как исправить Runtime Error 217: отсутствует файл stdole32.tlb

p, blockquote 17,0,0,0,0 –>

Если вам не хватает файла stdole32.tlb, Вам необходимо скачать его и заменить. В то время как вы могли бы быть в состоянии получить этот файл на нескольких различных веб-сайтах, лучше всего получить его через библиотеки Microsoft dll.

p, blockquote 18,0,0,0,0 –>

Как исправить Runtime Error 217: сломанные или отсутствующие файлы реестра

p, blockquote 19,0,0,0,0 –> p, blockquote 20,0,0,0,1 –>

Файлы реестра, которые стали сломанными или повреждены, могут быть восстановлены при запуске авторитетных программ registry cleaner на вашем компьютере. Выберите ту программу, которую вы хотите скачать, установите её и запустите, чтобы выполнить ремонт вашей системы.

(1 оценок, среднее: 1,00 из 5)

В этой статье мы расскажем вам, как избавиться от ошибки runtime 217 error at 123456.

Что делать если у вас стала возникать ошибка runtime 217 error?


Вот варианты решения проблемы:

Autodata — если у вас выдаёт ошибку Runtime error 217 004BB10D необходимо произвести следующие действия:

открываем командную строку (расположена в C:Usersимя вашего компьютера AppDataRoamingMicrosoftWindowsStart MenuProgramsSystem Tools) правой кнопкой по ярлыку, запустить от имени администратора, пишем в появившемся окне cd c:adcda2 “regsvr32 ChilkatCrypt2.dll”

если выдаёт ошибку place the cd/dvd in drive and choose ok необходимо запустить ФАЙЛ.

Если при установке windows либо другого программного обеспечения выдаёт ошибку CRC скорее всего у вас повреждён носитель, так же могут быть неисправны, дисковод, винчестер или флешка. Попробуйте другой не оцарапанный диск или другую флешку, в случае если не помогло, другой оптический накопитель или дисковод.

Видео драйвер перестал отвечать и был восстановлен, возможен перегрев графического ядра, битая память видеокарты, поврежденный кристалл ядра.

D3d.dll или DXD3D dll error — рекомендуется переустановить последний directX

AutoCAD в последних версиях, при загрузке особо ёмких чертежей, было замечено потребление оперативной памяти до 16 гб. В случае если ваш компьютер имеет характеристики intel i3 4gb ddr3*2, проблема проявляется в зависании при сохранении изменений в чертежах (особо ёмких чертежах).

Если у вас сбрасывается время число и год, скорее всего проблема заключается в батарейке материнской платы, которая села от времени и не запитывает BIOS материнской платы от чего он сбрасывает все настройки на заводские, а именно на дату изготовления материнской платы. Так же не которые сайты в браузере могут просить установить сертификат, такие как Mail.ru например.

Решение просто необходимо заменить батарейку.

Запуск программы не возможен, так как на компьютере отсутствует MSVCP.DLL. Попробуйте переустановить программу.

Решение: Необходимо установить microsoft visual С++ самой свежей версии.

В случае если на вашем компьютере бывают частые сбои с синим экраном, (экран смерти, он же BSOD) и каждый раз код ошибки разный 0*00000003b, 0*00000008e, 0*000000050 и т.п. есть большая вероятность неисправной оперативной памяти. Проще всего поставить другую оперативную память и запустить тот процесс или дать ту же нагрузку, какую вы давали при этих сбоях. Сбоя нет, проблем нет, память была неисправна, диагностика успешна, проблема устранена. «Почему проще всего подкинуть другую, а не запустить диагностический тест?» спросите вы, всё очень просто не все тесты видят неисправности оперативной памяти и при этом занимают уйму времени. Проще говоря можно потратить много времени и не найти причину, и двигаться дальше в неверном направлении.

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

Вы можете столкнуться с ошибкой выполнения 217 на ПК с Windows при открытии приложения. У этой проблемы может быть несколько причин, таких как неполный пакет загрузки, поврежденные файлы и т. Д. В ошибке также будет указан адрес, по которому произошла ошибка времени выполнения. Например, он может сказать Ошибка выполнения 217 по адресу 00580d29, 004bb10d, 5009763B, 0047276a, 0041fae1 и т. Д.

Ошибка во время выполнения 217

Вот что вы можете сделать, чтобы исправить ошибку выполнения 217 в Windows 10

  1. Запустите SFC и DISM
  2. Переустановите приложение
  3. Восстановить установку Microsoft Visual C ++
  4. Устранение неполадок в состоянии чистой загрузки.

Поговорим о них подробнее.

1]Запустите SFC и DISM

Как исправить ошибку выполнения 217 (0041ACoD) в Windows 10

Одна из наиболее частых причин этой ошибки — поврежденные системные файлы, и с помощью этих двух команд мы собираемся исправить их. Для этого запустите командную строку от имени администратора, введите следующие команды и одновременно нажмите Enter.

sfc / scannowDism / Online / Cleanup-Image / ScanHealth

Теперь попробуйте запустить приложение, надеюсь, вы не столкнетесь с ошибкой.

2]Переустановите приложение

Другой причиной этой проблемы является неполная загрузка, поэтому для решения этой ошибки нам необходимо переустановить приложение, которое вызывает эту ошибку. Для этого нажмите Win + S, введите «Добавить или удалить программы» и нажмите «Открыть». Теперь найдите приложение, которое выдает ошибку выполнения, выберите и нажмите Удалить.

Теперь переустановите приложение и, надеюсь, ошибка выполнения 217 будет исправлена.

Связанный: Исправить ошибку времени выполнения R6034 в Windows.

3]Восстановить установку Microsoft Visual C ++

Еще одна вещь, которую вы можете сделать, чтобы исправить это, — это восстановить Microsoft Visual C ++. Для этого выполните следующие действия:

  1. Запустите панель управления из меню «Пуск» и щелкните «Программы и компоненты».
  2. Выберите распространяемый компонент Microsoft Visual C ++ 2015-2019 (x64) и нажмите «Изменить»> «Восстановить».

После этого следуйте инструкциям на экране, чтобы восстановить Microsoft Visual C ++. Надеюсь, это исправит ошибку времени выполнения.

4]Устранение неполадок в состоянии чистой загрузки

Ошибка выполнения 217 в Windows 10

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

Для этого выполните следующие действия:

  1. Нажмите Win + R, введите «msconfig» и нажмите Enter.
  2. Выберите «Обычный запуск», перейдите на вкладку «Службы», установите флажок «Скрыть все службы Microsoft» и нажмите «Отключить все»> «Применить»> «ОК».
  3. Перезагрузите компьютер и проверьте, сохраняется ли проблема.

Если вы не испытываете ошибки выполнения в состоянии чистой загрузки, попробуйте сделать то же самое еще раз, но на этот раз снимите отметки с некоторых служб. Повторяйте этот шаг, пока не найдете точного виновника проблемы.

Надеюсь, эти решения помогли вам исправить ошибку Runtime 217.

Читать далее:

Ошибка во время выполнения 217 .

When you are working with Windows, the runtime error 217 may appear on your screen. Then, why does it happen? Generally, the runtime error can happen for many reasons.

It could be due to misconfiguration of the system files, corrupt system files, conflicts with third-party applications, memory problems, conflicts with antivirus, corrupt Microsoft Visual C ++ Runtime Library, or it could be due to graphics driver problems.

How to Fix Runtime Error 217 at 004bb10d in Windows 10/8/7

Generally, there are so many codes that may happen when you get runtime errors on all Windows versions. But, in this chance, we will focus on giving you the way to fix runtime error 217 at 004bb10d which may appear on all versions of Windows.

Table of Contents on this article below:

  • More info: How to Fix Connections to Bluetooth Windows 10 from official site microsoft.com

At least, there are some ways that you can take to fix it. So, let’s see how to fix runtime error 217 at 004bb10d!

Way 1: Use Third-Party App to Fix Runtime Error

When you get difficult ways to fix runtime errors in a manual way, it is time for you to use some third-party apps. Here, we have two gorgeous apps to help you in fixing runtime error 217 at 004Bb10D.

App 1–RegCure Pro

You definitely can choose the RegCure Pro app to fix Runtime Error 217 At 004Bb10D automatically. How to get it?

  • The main thing that you have to do is downloading  RegCure Pro app that you can get at http://runtime.error.217.at.004bb10d.windows.8.autodata.fixpccrash.com/downloadregcure.php.
  • Once you download the app, it is time to install it on your Windows.
  • Find the file that you have downloaded from your library.
  • Then, install the program by right-clicking the file and Run as administrator.
  • After that, follow the installation steps until finish.
  • Once the app appears on your desktop, click on to run it.
  • Of course, the window of the app will be open, here, you need to click on Scan button.
  • Click the Fix errors button when the scan is completed.
  • Last, you have to restart your computer to have a check.

App 2—SpyHunter

You have to know that Spyhunter is one of the most gorgeous spyware removal tools on the market. Here, this app can help you to detect and remove various kinds of viruses, malware and anything that can harm your computer’s system. So, follow the steps to run this app:

  • First, you need to download Spyhunter app at http://runtime.error.217.at.004bb10d.windows.8.autodata.fixpccrash.com/downloadspyhunter.php.
  • Then, install this app when the downloading file is completed.
  • Double-click on the downloaded file to install it. Follow the installation steps on your screen.
  • After the installation is completed, it is time to launch the app.
  • On Spyhunter app screen, you have to choose the Malware Scan button to perform a full and fast system scan on your computer.
  • When the scan is finished, you can choose Select all, click Remove to delete all the threats on your computer.

That’s it! Now, you already get rid of any threats that may be a cause of the runtime error occuring on your Windows.

Way 2: Update Your Windows OS

If the third-party apps above cannot solve your problem, well it’s time for you to take the next solution. Here, we recommend you to update your Windows operating system.

However, the error 217 at  004bb10d Windows can be used by an old version of your Windows. To update your Windows, let’s follow some steps below!

  • First, click the Windows Button icon on your screen.
  • Then, choose Settings and choose Update and Security.
  • After that, click Window Update.
Update Your Windows OS
  • Select Check for Updates.
  • MOve on to the next step if you got a message that says your device is up to date. While, move on if the process fails to resolve your problem.

Way 3: Shut down the TSR program

Runtime errors can occur due to conflicts with third party programs and TSR. TSR stands for Terminate and Stay Resident, which is a set of programs that are loaded into memory at startup and will become active when needed.

When there is a conflict between a third party application and TSR with the Microsoft Visual C ++ Runtime Library, a Runtime error message appears. To shut it down, follow our steps below!

  • Open Task Manager (CTRL + Shift + Esc)
  • Go to the Startup tab
  • Disable all TSRs and startup programs
Disable all TSRs and startup programs
  • Restart the computer
  • After the computer turns back on, try to check if the runtime error is gone.
  • If the runtime error is gone, then you can reactivate the TSR and the startup program that was disabled one by one.
  • Check which TSR or startup program caused the error.
  • Permanently disable the program.

Way 4: Clean Boot

Then, to solve Runtime errors in Windows 10, Windows 8, and Windows 7 is to enter clean boot mode. This mode is a state where Windows runs only with the basic services it needs.

The way to clean boot in Windows can be done either  by entering Safe Mode or manually. Here are the way to clean boot on all Windows version:

  • Go to Run service (Windows key + R)
  • Then, type “msconfig”. Hit OK.
  • Click on the Services tab after entering the System Configuration window .
  • Then, check the Hide all Microsoft services option
  • Click Disable all options. Click Apply and hit OK.
  • Now, you have to restart your computer.

Way 5: Correct the Regional Settings

Wrong regional settings on your computer can cause the runtime error 217 on your Windows. So make sure that you set the correct regional settings on your Windows by following some steps:

  • Hit Windows Key + R to open Run.
  • Then, type the Control Panel. Hit OK.
type the Control Panel. Hit OK.
  • Once the control panel opens, you need to type Region in the search box.
  • Choose Region and Language.
  • Set the regional settings and make sure all are correct.
Set the regional settings and make sure all are correct
  • Don’t miss: Instructions to Split Screen in Windows 10 from site microsoft.com

Way 6: Update Msvcrt.dll File

Msvcrt.dll File here is included in Microsoft Visual C++ Runtime Library. To update it, you have to follow some steps below!

  • Go to Run (Windows Key + R)
  • Type wuauclt.exe /updatenow.
  • Then, click Ok.

To note, this error can also happen when the Microsoft DCOM file on the system is outdated. If it is the same problem with you, of course the only way that you can take is to update Msvcrt.dll File.

Hopefully, our ways above can solve the issues of runtime error 217 at 004bb10d on all versions of Windows (7,8 and 10).

Alfin Dani

AUTHOR BIO

On my daily job, I am a software engineer, programmer & computer technician. My passion is assembling PC hardware, studying Operating System and all things related to computers technology. I also love to make short films for YouTube as a producer. More at about me…

Download PC Repair Tool to quickly find & fix Windows errors automatically

You may encounter Runtime Error 217 on Windows PC while opening an application. There can be multiple reasons for this issue such as incomplete download package, corrupted files, etc. The error will also mention the address where the Runtime error has occurred. Eg it could say Runtime Error 217 at 00580d29, 004bb10d, 5009763B, 0047276a, 0041fae1, etc.

Runtime Error 217

These are the things you can do to fix Runtime Error 217 on Windows 11/10:

  1. Run SFC and DISM
  2. Reinstall the application
  3. Repair Microsoft Visual C++ installation
  4. Troubleshoot in Clean Boot State.

Let us talk about them in detail.

1] Run SFC and DISM

How to Fix Runtime Error 217 (0041ACoD) on Windows 10

One of the most common reasons for this error is corrupted system files and with these two commands, we are going to rectify them. To do that, launch Command Prompt as an administrator, type the following commands and hit Enter simultaneously.

sfc /scannow
Dism /Online /Cleanup-Image /ScanHealth

Now, try running the application, hopefully, you won’t face the error.

2] Reinstall the application

Another reason for this problem is incomplete download, so, to solve this error we need to reinstall the application that is causing this error. To do that, hit Win + S, type “Add or remove programs”, and click Open. Now, search out the application that’s giving you the Runtime error, select, and click Uninstall.

Now, reinstall the application and hopefully, Runtime Error 217 will be fixed.

Related: Fix Runtime Error R6034 in Windows.

3] Repair Microsoft Visual C++ installation

Another thing you can do to fix this is to repair Microsoft Visual C++. To do that, follow these steps:

  1. Launch Control Panel from the Start Menu and click Programs and Features
  2. Select Microsoft Visual C++ 2015-2019 Redistributable (x64) and click Change > Repair.

After this follow the on-screen instructions to repair Microsoft Visual C++. Hopefully, this will fix the Runtime error.

4] Troubleshoot in Clean Boot State

Runtime Error 217 on Windows 10

In most cases, you will able to resolve the issue with the first two methods, but if you fail to do so, try troubleshooting in the Clean Boot State. This way we will see if the problem is because of a third-party application.

To do that, follow these steps:

  1. Hit Win + R, type “msconfig” and hit Enter.
  2. Select Normal startup, go to Services tab, tick “Hide all Microsoft services”, and click Disable all > Apply > Ok.
  3. Restart your computer, and check if the issue persists.

If you are not experiencing Runtime Error in Clean Boot state, try doing the same again but this time, untick some services. Repeat this step till you find the exact culprit of the issue.

Hopefully, these solutions have helped you in fixing Runtime Error 217.

Read Next:

  • Fix Runtime Error 482 while Printing
  • How to fix Runtime Error 1004 in Microsoft Excel
  • Runtime error 429, ActiveX component can’t create object.

Ezoic

Yusuf is currently pursuing B.Tech in Delhi. He is a keen follower of the Windows ecosystem and enjoys working on his Windows 11 PC.

Как исправить ошибку Runtime Error 217.

в Ошибки ПК 28,111 Просмотров

Ошибки времени выполнения, одни из тех проблем, которые преследуют пользователей компьютеров с Windows-based операционными системами. Исправление этих проблем зависит от конкретной ошибки во время выполнения, на что указывает количество и любой текст, который сопровождает сообщение об ошибке.

p, blockquote 1,0,0,0,0 —>

p, blockquote 2,0,0,0,0 —>

p, blockquote 3,0,0,0,0 —>

Что такое Runtime Error 217?

p, blockquote 4,0,0,0,0 —>

Runtime Error 217 может возникать по одной из множества причин. Эти причины включают в себя:

p, blockquote 5,0,1,0,0 —>

  • Отказ зарегистрировать dll в процессе установки приложения.
  • Наличие вирусов на компьютере.
  • На вашем компьютере установлены неправильные региональные настройки.
  • На вашем компьютере есть устаревший файл msvcrt.dll .

на вашем компьютере.

p, blockquote 6,0,0,0,0 —>

  • Сломанные или отсутствующие файлы реестра.
  • Наличие устаревшего MS DCOM файла на вашем компьютере.
  • Отсутствует stdole32.tlb-файл на вашем компьютере.

Как исправить Runtime Error 217: неисправные установки

p, blockquote 7,0,0,0,0 —>

Если вы подозреваете, что ошибка runtime error 217 возникает из-за неправильной установки, просто переустановите приложение. Однако, если ваш источник для приложения поврежден, то Вам необходимо получить новый диск или скачать новую версию приложения перед его попыткой установки. Как только приложение будет установлено правильно, ошибка runtime больше не должна возникать.

p, blockquote 8,0,0,0,0 —>

Как исправить Runtime Error 217: вирусная инфекция

p, blockquote 9,0,0,0,0 —>

Когда вирус заражает компьютер, может возникнуть ряд проблем, в том числе ошибки времени выполнения. Если ошибка runtime error 217 появляется из-за вирусной инфекции, просто просканируйте компьютер с помощью современных антивирусных приложений, чтобы её удалить.

p, blockquote 10,1,0,0,0 —>

Как исправить Runtime Error 217: неправильные региональные настройки

p, blockquote 11,0,0,0,0 —>

Если настройки Вашего компьютера неверны, может появится ошибка Runtime Error 217. Убедитесь, что настройки даты на вашем компьютере совпадают для страны, где вы находитесь.

p, blockquote 12,0,0,0,0 —>

Как исправить Runtime Error 217: устаревшие файлы msvcrt.dll

p, blockquote 13,0,0,0,0 —>

Если ошибка происходит из-за устаревшего файла msvcrt.dll, Вам необходимо заменить файл при обновлении операционной системы. Вы можете сделать это, посетив веб-сайт корпорации Майкрософт. Пока вы там находитесь, проверьте все существующие исправления, которые были выпущены для вашей версии Windows.

p, blockquote 14,0,0,0,0 —>

Как исправить Runtime Error 217: устаревший файл MS DCOM

p, blockquote 15,0,0,1,0 —>

Если ошибка появляется из-за устаревшего файла MS DCOM, получите последние обновления для вашей операционной системы через веб-сайт Microsoft.

p, blockquote 16,0,0,0,0 —>

Как исправить Runtime Error 217: отсутствует файл stdole32.tlb

p, blockquote 17,0,0,0,0 —>

Если вам не хватает файла stdole32.tlb, Вам необходимо скачать его и заменить. В то время как вы могли бы быть в состоянии получить этот файл на нескольких различных веб-сайтах, лучше всего получить его через библиотеки Microsoft dll.

p, blockquote 18,0,0,0,0 —>

Как исправить Runtime Error 217: сломанные или отсутствующие файлы реестра

p, blockquote 19,0,0,0,0 —> p, blockquote 20,0,0,0,1 —>

Файлы реестра, которые стали сломанными или повреждены, могут быть восстановлены при запуске авторитетных программ registry cleaner на вашем компьютере. Выберите ту программу, которую вы хотите скачать, установите её и запустите, чтобы выполнить ремонт вашей системы.

(1 оценок, среднее: 1,00 из 5)

Источник

Здравствуйте, я ошибка 217 и я вам ничего не скажу

Вероятно многие встречались с таким вот «партизаном» при старте или завершении приложения:

Очень информативное сообщение, сразу понятна причина ошибки, место и способ ее решения.
Впрочем, если без шуток, что это вообще такое?
Конечно-же это исключение, но ни тип исключения, ни его описание нам не доступны — просто «Runtime error 217» и адрес, а дальше сами…

Если честно, раньше я как-то даже не задумывался по поводу данного исключения, т.к. в моих проектах оно явление редкое, пока однажды у целой череды пользователей не начала воспроизводится именно 217-я ошибка.
Впрочем, даже тогда я не пошел по правильному пути и просто добавил дополнительный уровень логирования в проект, по результатам которого достаточно оперативно нашел причину и исправил ее.
Но, по сути, я просто потратил свое время…

И тратил бы его в дальнейшем, если бы на днях со мной не связался Виктор Федоренков и не рассказал о своих мыслях по поводу ошибки за номером 217.

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

Без теории нам никуда, иначе можем уткнуться в пределы собственных знаний.
Поэтому начнем, конечно, с теоретической части.

Для начала я немного освежил мои представления об ошибках в принципе, перечитав часть статьи «Обработка ошибок — глава 1.2.2» за авторством Александра Алексеева, откуда вынес информацию о том, что ошибка 217 будет отображена в том случае, если не инициализирован модуль SysUtils, причем это у Александра проиллюстрированно достаточно наглядно:


Открыть картинку в полный размер…

На основании данной картинки можно сделать грубый вывод: пока SysUtils жив — все исключения должны отображаться в нормальном виде, о чем идет отдельное упоминание:

Например, если вы видите сообщение о runtime-ошибке, то, судя по приведённой схеме, маловероятно, чтобы ошибка возникла в обработчиках событий на форме. Зато гораздо вероятнее, что она возникает, скажем, в какой-то секции finalization (которая выполняется после секции finalization модуля SysUtils) или в назначенной процедуре ExitProcessProc. Но, разумеется, причина ошибки может сидеть где угодно — в том числе и в упоминаемых обработчиках событий.

Ну что-ж давайте проверим, пишем код, в котором SysUtils должна быть финализирована позже модуля Unit1, в котором искусственно генерируем исключение:

Билдим, запускаем, закрываем форму и… Runtime error 217.

Утверждение о том, что 217 отображается после финализации SysUtils полностью верное, но давайте-ка посмотрим на сам код финализации:

Смотрите что происходит: в процедуре FinalizeUnits вызываются все финализирующие процедуры, адреса которых расположены в массиве InitContext.InitTable^.UnitInfo в том порядке, в котором происходила их инициализация, т.е. самые первые расположены в начале массива (а финализация идет с конца).
Где-то в самом низу расположен и SysUtils + System, ну а мы, с нашим модулем Unit1 где-то в самом верху.
Но вдруг происходит исключение в нашем модуле и «бабах», порядок катарсиса нарушен.

После «бабах» FinalizeUnits вызывается повторно, пропуская наш модуль, вызвавший исключение, вследствие чего разрушается SysUtils и разные, встречающиеся по пути, class destructor-ы, до кучи грохается System с менеджером памяти (сидящий одним из первых в начале списка), после чего идет контрольный выстрел в лоб — RAISE, вот тут-то мы и приплыли — здравствуй 217.

А что если произойдет исключение в секции инициализации любого модуля?

Делаем вывод: любое необработанное исключение в секциях инициализации или финализации будет приводить к потере описания исключения и приводить к ошибке 217.

На этом с теорией, думаю, закончим.
Имея на руках понимание о причине возникновения Runtime error 217, попробуем получить на руки более привычный нам вариант сообщения об исключении.

Отключаем финализацию модулей

В самом начале обсуждения Виктором был предложен достаточно эффективный способ обхода данной ошибки.

Его анализ заключался в следующем: общая инициализация обработчика исключений производится в процедуре InitExceptions модуля SysUtils, а финализация вызовом DoneExceptions.

Если каким либо образом отключить вызов DoneExceptions плюс не дать разрушиться менеджеру памяти, заблокировав вызов блока финализации System — на руки мы получим сообщение об исключении в приемлимом виде.

Как вариант решения был предложен следующий код, который нужно подключить к файлу проекта самым первым модулем (будет работать начиная с D2005 и выше):

Если честно — аплодировал стоя.
Вот он: хак в самом грязном виде как он есть — такие вещи могут делать только те, кто действительно понимает, чем это грозит 🙂
И данный модуль вывел работу нашего IT отдела примерно на три часа — это была жесткая дискуссия 🙂

Но, впрочем, давайте разберем логику работы данного кода:
Суть его проста, необходимо выйти на данные о загруженных модулях (включая BPL) в том виде, в котором их понимает Delphi приложение. Это было сделано посредством доступа к началу однонаправленного списка структур TLibModule. Первым элементом списка будет структура, описывающая текущий образ, откуда нам нужно всего-то и получить данные о структуре UnitInfo, которая содержит в себе данные как о количестве инициализированных модулей, так и об адресах их процедур инициализации и финализации в виде записи PackageUnitEntry.

Блокирование финализации модулей происходит посредством присвоения параметру FInit значения nil у каждой записи PackageUnitEntry.

При обниливании данного параметра FinalizeUnits не сможет произвести вызов обработчика и в итоге тот самый raise, о котором я писал выше, сможет достаточно корректно произвести отображение возникшего исключения.

Но вот дальше все сложнее.

Пытаемся причесать хорошую мысль

Идея здравая и причины понятны, но вот как-же так, ресурсы все-же не освобождены, FastMem перестанет нормально работать (она собирает утечки как раз при финализации), да и совместимости маловато, к примеру, как я и сказал выше, под Delphi 7 данный код вообще работать не сможет.

После первого часа обсуждений в IT отделе мы даже умудрились прийти и к такому выводу: «да и хрен с ними с SysUtils и System — что-то критичного они за собой не несут».
А потом, опять начали спорить — ну не устраивал нас этот подход, вроде все хорошо, но не аккуратненько как-то.

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

И тут, сидя в отладчике и прогоняя код по 70-му разу пришла мысля.
Дык эта… а как вообще выводится сообщение о произошедшем исключении?

А выводится оно посредством передачи управления на ExceptHandler, в коде которого нет ничего секретного.
А что мы делаем убирая финализацию модулей?
Правильно, заставляем вызваться его-же.

Попробуем-ка проэмулировать вызов ExceptHandler.
Пишем тестовый юнит и подключаем его к проекту самым первым:

Запускаем на выполнение и…


Получилось.

Встроившись в цикл финализации, мы отобразили произошедшее исключение и продолжили финализацию дальше вызовом Halt(1).

В итоге задача решена, грамотно и документировано, и совместимо с Delphi 7, но…

А не развить ли идею?

Есть такое понятие, как «наведенные ошибки», т.е. ошибки произошедшие из-за того что перед ними тоже произошла ошибка.

Ну к примеру, функция А, которая должна возвращать экземпляр некоего класса и функция Б, использующая этот экземпляр в работе. К примеру в функции А произошло необработанное исключение (например нет доступа к файлу) и она не создала класс, а потом где-то гораздо позже по коду приложения процедура Б выполняет обращение к этому экземпляру и в итоге происходит Access Violation.

Тоже самое может произойти и в процедурах инициализации/финализации, причем исключение, произошедшее в финализации скроет от нас саму причину.

Для демонстрации напишем вот такой код, в котором при инициализации приложения будет создаваться некий логер, в который будут писаться этапы работы приложения, а в финализации будет запись о завершении работы.
Для генерации исключения заставим логер создаваться по несуществующему пути:

Мало у кого в системе присутствует диск «А» поэтому результатом этого кода будет либо «Runtime error 216» (именно 216, а не 217), либо, если подключим код из предыдущей главы:

Exception EAccessViolation in module Project2.exe at 001B1593.
Access violation at address 005B1593 in module ‘Project2.exe’. Read of address 00000000.

А ведь причина то кроется в самом первом исключении, которое нами не отображается и с наскока разобраться в причине ошибки не получится.

Для того чтобы исправить эту несправедливость, можно немного причесать код и довести его до вот такого состояния:

Здесь идея проста, функция GetNextException по сути повторяет вызов AcquireExceptionObject, но после своего вызова не теряет ссылку на следующее в очереди исключение, а запоминает адрес следующего фрейма во внешней переменной.
После чего все исключения заносятся в список (самое последнее будет первым в списке) и выводятся программисту с соблюдением очередности, в результате чего нам будет сразу понятно, что сначала произошло вот это:

И уже только после него пошли всякие там AV.

Теперь по поводу остальных кодов ошибок.
Почему я начал именно с «Runtime error 217»?
Ну потому что она наиболее легко воспроизводима, а так технически, используя выше приведенный модуль, мы получим на руки вполне нормальное описание всех возможных Runtime ошибок, коих в наличии у нас вон сколько:

Вот таким небрежным кодом, мы можем получить то, о чем нам не хочет говорить ошибка под кодом 217.

Впрочем, я не думаю что этот подход будет незнаком опытным программистам.
Скорее всего это — здравствуй велосипед, ибо вероятнее всего данная проблема кем-то уже решалась ранее, но я просто не знал о данном решении.

А если нет — значит буду вторым.

Отдельный респект соавтору и вдохновителю данной статьи — Виктору Федоренкову.

Источник

Понравилась статья? Поделить с друзьями:
  • Ошибка runtime error 13 type mismatch как исправить
  • Ошибка runtime error 1004 vba
  • Ошибка runtime error 1004 excel
  • Ошибка runtime error 1004 application defined or object defined error
  • Ошибка run time error 9 subscript out of range