Блог GunSmoker-а (переклади) Отримали Internal error у Delphi
. коли встановлюють одну версію, як добре, як програмування на комп'ютері, що це означає, що людина.
Отримали Internal error у Delphi?
Це переклад довідкової системи Delphi.
Повідомлення про помилку Internal Error: X1234 вказує на те, що компілятор зіткнувся з деякою ситуацією, яка відрізняється від синтаксичної помилки, і він не може продовжити компіляцію.Підказка: у коді помилки Internal error зашифровано файл і рядок у вихідниках компілятора, де виникла помилка. Ця інформація може допомогти технічній підтримці виявити проблему. Не забудьте записати цю інформацію та прикріпити її до звіту про помилку.
Як позбудеться Internal error
Якщо проблема все ще існує
- Видаліть усі файли .dcu(il), пов'язані з вашим проектом.
- Повністю закрийте ваш проект (File/Close all).
- Наново відкрийте свій проект. Це очистить кеш модулів у IDE. Як варіант – ви можете перезапустити IDE.
- Ще варіант - спробувати перекомпілювати програми використовуючи команду Build (а не Compile) - при цьому компілятор перестворить всі файли dcu(il).
Проаналізуйте свій код від останньої зміни
Як тільки ви змогли ізолювати проблему – було б непогано зробити мінімально можливий тестовий приклад-проект, який демонструє виникнення вашої помилки та вислати його на Quality Central.
Інші способи для позбавлення від помилок internal error
- Якщо проблема пов'язана з циклами - спробуйте змінити for на while/repeatабо навпаки.
- Якщо проблема виникає у вкладених функціях – спробуйте зробити їх глобальними.
- Якщо проблема виникає у наведенні типів - спробуйте скористатися іншим, аналогічним за змістом наведенням або використовуйте тимчасові змінні.
- Якщо проблема виникає в операторі with - спробуйте його усунути і розписати явно.
- Спробуйте вимкнути оптимізацію (Project/Options/Compiler).
Зазвичай є безліч різних шматків коду, які можуть досягти потрібної вам мети. Ви можете спробувати позбавитися помилки, змінюючи код. Спробуйте просто переписати код із нуля, щоб він виконував ваше завдання, але робив це просто інакше. Можливо, обране рішення не буде оптимальним, але принаймні ви зможете продовжувати роботу над своїм додатком. Якщо у вас є остання версія компілятора – перевірте свій код у ній. Якщо проблема відтворюється - відправте, як і раніше, Quality Central мінімальну демку проблеми. Якщо ж проблеми немає - значить цей глюк компілятора вже був виправлений.
Конфігурація IDE для мінімізації шансу виникнення internal error
Створіть один каталог, де будуть лежати всі файли .dcp(il). Наприклад, створіть каталог C:\DCPIL і в Tools Environment/Options/Library встановіть DCP(IL) output directory у C:\DCPIL. Ця настройка гарантує, що всі .dcp(il) файли, що генеруються компілятором, підуть в одну папку і, таким чином, будуть найсвіжішими. Це корисна опція, якщо ви переміщаєте пакет із одного каталогу до іншого. Ви можете створити каталог і для .dcu(il) файлів, використовуючи Project/Options/Directories/Conditionals/Unit output directory.
Сенс цих змін у тому, щоб завжди використовувати найсвіжішіверсії ваших .dcu(il) та .dcp(il). В іншому випадку ви можете зустрітися з помилками internal error.