Internal error la30 delphi 7

Блог GunSmoker-а (переводы) . when altering one’s mind becomes as easy as programming a computer, what does it mean to be human. вторник, 25 ноября 2008 г. Получили Internal error в Delphi? Это перевод справочной системы Delphi. Сообщение об ошибке Internal Error: X1234 указывает на то, что компилятор столкнулся с некоторой ситуацией, отличной от […]

Содержание

  1. Блог GunSmoker-а (переводы)
  2. вторник, 25 ноября 2008 г.
  3. Получили Internal error в Delphi?
  4. Глюки компиляторов
  5. Access Error [Fatal Error] Internal Error: LA30
  6. как установить AlphaSkins

Блог GunSmoker-а (переводы)

. when altering one’s mind becomes as easy as programming a computer, what does it mean to be human.

вторник, 25 ноября 2008 г.

Получили Internal error в Delphi?

Это перевод справочной системы Delphi.

Сообщение об ошибке Internal Error: X1234 указывает на то, что компилятор столкнулся с некоторой ситуацией, отличной от синтаксической ошибки, и он не может продолжить компиляцию.

Подсказка: в коде ошибки Internal error зашифрован файл и строка в исходниках компилятора, где возникла ошибка. Эта информация может помочь технической поддержке выявить проблему. Не забудьте записать эту информацию и прикрепить её к своему отчёту об ошибке.

Как избавится от Internal error

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

Если проблема всё ещё существует

  • Удалите все .dcu(il) файлы, связанные с вашим проектом.
  • Полностью закройте ваш проект (File/Close all).
  • Заново откройте свой проект. Это очистит кэш модулей в IDE. Как вариант — вы можете перезапустить IDE.
  • Ещё вариант — попробовать перекомпилировать приложения используя команду Build (а не Compile) — при этом компилятор пересоздаст все dcu(il) файлы.

Если ошибка не уходит, закройте IDE и попробуйте перекомпилировать приложение, используя компилятор командной строки (dcc(il).exe). Это исключит из рассмотрения кэширование юнитов в IDE.

Проанализируйте свой код от последнего изменения

Если проблема ещё актуальна, вернитесь к тому месте в коде, где вы последний раз что-то меняли и просмотрите свой код. Обычно, большинство ошибок internal error могут быть воспроизведены всего несколькими строками кода и часто при этом код использует синтаксические конструкции, которые используются довольно редко. В этом случае, попробуйте модифицировать код, чтобы он выполнял свою работу, но другим способом. Например, если вы используете приведение типа в выражении, попробуйте объявить переменную нужного типа и сначала присвоить ей значение, а уж потом использовать её в выражении: А вот пример неожиданного кода, который вы можете исправить для избавления от ошибки: Если проблема связана с циклом while. do — попробуйте заменить его на for. do. Хотя эти изменения не исправляют глюк компилятора, они могут помочь вам продолжать работать над своим приложением. Если ваши изменения избавляют вас от ошибки, это не значит, что все while или for циклы глючат — скорее вы используете их несколько необычным образом.

Как только вы смогли изолировать проблему — было бы не плохо сделать минимально возможный тестовый пример-проект, который демонстрирует возникновение вашей ошибки и выслать его на 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.

Источник

Глюки компиляторов

Меня например в дельфи изрядно достала internal error LA30 — такое впечатление что начиная с определенного обьема исходника определенного типа, у дельфи сносит крышу, бывают и другие Internal error при компиляции периодически (но не всегда) — причем практически независимо от версии дельфи (начиная от 6 до 2007 с апдейтами и без) — с апдейтами правда пореже все же.
Для LA30 помогает повторная перекомпиляция, для некоторых других — только перезапуск дельфи.

Собственно вопрос: встречаетесь ли вы с ними и какие методы решения проблем используете (не только для дельфи)?.

А версия дельфей какая?

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

А версия дельфей какая?

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

имхо, истинное сборище глюков и недоделанностей — визуальная среда для разработки приложений, работающих с БД в Visual C# в 2005-й студии.. нигде больше такого кошмара не встречал.

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

Это не глюк, читаем стандарт (например этот кусок):
1.9.3 Certain other aspects and operations of the abstract machine are described in this International Standard as unspecified (for example, order of evaluation of arguments to a function).

+ тоже самое касается вызова выражений (5.4)
Except where noted, the order of evaluation of operands of individual operators and subexpressions of individual expressions, and the order in which side effects take place, is unspecified:
i = v[i++]; // the behavior is unspecified
i = 7, i++, i++; // i becomes 9
i = ++i + 1; // the behavior is unspecified
i = i + 1; // the value of i is incremented

Это не то — я ведь не об этом речь веду.
Этот пост не об особенностях работы оптимизации/логики языка или об ошибках в исходниках — он только об именно нестабильной работе компиляторов на совершенно адекватных исходниках с необьяснимыми ошибками на ровном месте (в том числе случайном месте). Дело в том что исходники нормально компилируются и работают — другое дело компиляция не всегда успешно проходит, причем ошибки именно что внутренние (то есть коды этих ошибок то и не должен видеть пользователь — они только для разработчиков компилятора).
Версии дельфи указаны в посте.

Ну и отошлите эти коды вместе со своими исходниками разработчикам компилятора. Они вам и ответят. Заодно и компилятор подправят в новой версии (если это действительно в нем проблема).

Хотя судя по описанию, проблема в вашей машине (аппаратная возможно память или софтовая возможно настройки ОС), проверяется простой проверкой, компиляцией на другой машине (у знакомых, друзей, соседей ) можно в другой версии компилятора. Если проблема пропала, значит проблема в вашей машинке, если осталась, значит в компиляторе.

10000 строк) файлах, но вылечилось это тогда переустановкой системы.

deni,
Вот поэтому и сказал что не совсем глюк =) Просто некоторые неопытные люди любят использовать такие конструкции, после чего убивают сутки на отладку

Они вам и ответят.
«Купите лицензию»?)

.
i = v[i++]; // the behavior is unspecified
i = 7, i++, i++; // i becomes 9
i = ++i + 1; // the behavior is unspecified
i = i + 1; // the value of i is incremented
Что значит unspecified. Постфиксный и префиксный инкременты же стандартизированны. И я ни когда сам не наталкивался на глюки компиляторов в этом вопросе, только на свои.
1-й и 3-й примеры дожны быть ещё как specified:
в первом должнен взяться i-й элемент массива и только после пройти инкремент.
в третьем инкремент префиксный и должен отработать до прибавления единицы, и i в итоге увеличится на 2.
И всегда на моём личном опыте так было, и с gcc и с vc.

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

А по теме, меня достаёт один глюк в gcc-4.1.2, он иногда считает private поле какого-либо класса недоступным другому, хотя указано, что этот другой ему friend-ом является. А обновить gcc нет возможности из-за того, что он основа дистрибутива gentoo

Что значит unspecified. Постфиксный и префиксный инкременты же стандартизированны.

Почитай стандарт, а? Я даже пункты указал.

По теме, gcc тот еще глюкодел. Вот, например, в нем такое прокатывает:
void func(int n) < int arr[n]; /* тут чето делаем с arr */ >
В правильных компайлерах ессно нет.

Ну и отошлите эти коды вместе со своими исходниками разработчикам компилятора. Они вам и ответят. Заодно и компилятор подправят в новой версии (если это действительно в нем проблема).

Хотя судя по описанию, проблема в вашей машине (аппаратная возможно память или софтовая возможно настройки ОС), проверяется простой проверкой, компиляцией на другой машине (у знакомых, друзей, соседей ) можно в другой версии компилятора. Если проблема пропала, значит проблема в вашей машинке, если осталась, значит в компиляторе.

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

Гыы, прокатывает.
По мне так это не глюк, просто gcc во многих местах отклоняется от стандарта, позволяя делать то, что стандартом запрещено.
Собственно что здесь такого плохово? Просто обявили локальный массив int-ов размером n. Другое дело что n это переменная, а стандартом помоему запрещено создавать нединамические массивы произвольной длины.

Все что отходит от стандарта — глюк (юзать надо _alloca). В частности, весь CLI в VC один большой и жирный глюк (эт шютк) А на сичот, что плохого в отходе от стандарта. ну подумай сам.

Порой стоит задуматься — а нужна ли эта мифическая близость к стандарту.
А вообще гцц действительно по сравнению с остальными наиболее стандартен )

Порой стоит просто задумацца, а стоило ли задумывацца И «более стандартен» Comeau, если на то уж пошло.

Источник

Access Error [Fatal Error] Internal Error: LA30

I’m getting Internal Error: LA30 every time I Run the application in delphi. The exact error is «Access violation at address 07262AF7 in module ‘RLINK32.DLL’ Read of Address 00000000»

I did remove all DCU files as indicated and rebuils but the same error still. Is their ay to troubleshoot this or bypass this error?

ASKER CERTIFIED SOLUTION

It is reported as fix, though. Have you installed the latest service packs? Which Delphi version anyways?

I’m going out for an a couple of hours and when I return everything is a mess 😛

erwin: post a message in communicty support asking to reopen the question. then you’ll be able to split points via the split points link.

alex: tell you the truth I didn’t notice that IA30 thing :)) I just saw the message and my brain suddenly pushed the answer on the stack. I tend to overlook details on apparently easy questions 😀

Lol, ciuly. I already noticed that you were going a bit into the wrong direction so I tried to put you back on a straight path. But Erwin found the solution all by himself so actually I wonder if he should ask for a refund instead. 😉
Of course, having the points split between the participants just for their participation isn’t bad either. 🙂 It’s not that the points are that important to me anyways but it shows future readers which remarks were most helpful in finding the answer.

And Erwin, you can go to community support and ask them to re-open thquestion so you can split the points if you want to, or ask for a refund since you solved the problem yourself. The latter is advisable when your question points are limited at EE. Not everyone here has an unlimited amount.

Источник

как установить AlphaSkins

как установить AlphaSkins вобщем я скачал с офсайта (http://www.alphaskins.com/index_rus.php) файл acnt_reg7.zip всё делал по этой инструкции

Пример установки под Delphi 7.
1.Качаешь последнюю версию и распаковываешь архив: http://www.alphaskins.com/index_rus.php
2.Создаешь папку, например: AlphaControls
3.Из папок: D7, AlphaDB, ResRussian коприруешь все файлы в AlphaControls
4.Tools->Environment Options->Library->Library Path здесь через точку с запятой пишешь путь к папке AlphaControls
5.FileOpen. в папке AlphaControls щелкаешь на файле acntD7_R.dpk, компилируешь и закрываешь окно, если будут вылазить еще окна, давишь в них Нет
6.FileOpen. в папке AlphaControls щелкаешь на файле acntD7.dpk, инсталлируешь и закрываешь окно, если будут вылазить еще окна, давишь в них Нет
7.FileOpen. в папке AlphaControls щелкаешь на файле AlphaDB7.dpk, инсталлируешь и закрываешь окно, если будут вылазить еще окна, давишь в них Нет
8.Все, появятся новые страницы в палитре компонентов

но при компиляции или инсталляции любого файла вываливаются ошибки!

На сайте есть русский хелп. Вот цитата из него:

Распакуйте файл acnt*.zip в любую пустую директорию.
Эта директория должна быть прописана в пути поиска системы. И добавьте (если это еще не сделано) директорию AlphaControls в Delphi (Tools->Environment Options->Library->Library Path).
Используйте меню «FileOpen. » в Delphi IDE для открытия библиотеки времени испольнения AlphaControls acntX_r.dpk (x — версия Delphi). В окне «Package. » нажмите кнопку «Compile» для компиляции пакета.
Используйте меню «FileOpen. » в Delphi IDE для открытия design-time пакета AlphaControls acntX.dpk. В окне «Package. » нажмите кнопку «Install» для инсталляции библиотеки.
Пользователи библиотеки AlphaDB могут установить ее путем копирования файлов в папку с AlphaControls и инсталляцией файла AlphaDB.dpk.
Конец цитаты.

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

Library path — $(Delphi)LibПапка_со_скиномD7
Library path — $(Delphi)LibПапка_со_скиномAlphaDB
Browsing path — $(Delphi)LibПапка_со_скиномD7
Browsing path — $(Delphi)LibПапка_со_скиномAlphaDB

И всё!

Источник

creater

1

Как правильно компилировать программу в Дельфях???

27.10.2009, 13:05. Показов 6486. Ответов 19


Народ, подскажите как компилировать прогу чтобы она не занимала дико много. Форма с парой кнопок, таблицей занимает 1.8Мб.
Залез в ехе-файл, а там левых иконок… Которые вообще никогда не пригодятся, видимо не видимо.

Помогите не дайти сойти с ума
Заранее большое спасибо.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0 / 0 / 0

Регистрация: 26.10.2009

Сообщений: 14

29.10.2009, 02:27

2

Я в этих делах не очень хорошо разбираюсь, но причина тому — VCL (Visual Components Library). Делфи сама построена по технологии RAD (Rapid Application Development), поэтому большой размер файла — плата за отказ от немерянных размеров кода аналогичной программы но, скажем, в MS Visual Studio. Мусора в EXE-шнике действительно много, но от него никуда вроде бы не деться. Разве что заменить VCL на KOL библиотеку. Кстати сам компилятор в Делфях очень сильный: при прямом Windows программировании (текста выходит как в Visual С++) при оптимизированных настройках в Delphi 7 exe-шник пустого цикла у меня вышел на 1.5 kb меньше, чем из Visual C++ 7.0. .

Вероника.



0



creater

29.10.2009, 07:01

3

Спасибо Вероника за ответ :-)

К библиотеке KOL Я давно присматириваюсь, даже пробывал использывать ее … Но есть ряд вопросов которые Я пока не решил, несмотря на то, что Я читал FAQ. Например как в KOL организовывать отображение БД …

Главное для меня, это конечно отобоажение на форме БД. Если Вы сможете как-то мне помочь в этом деле то, буду Вам очень признателен.

Заранее большое спасибо

0 / 0 / 0

Регистрация: 26.10.2009

Сообщений: 14

29.10.2009, 21:42

4

Я бы с удовольствием помогла Вам, Creater, но СУБД ох как не моя стихия , вообще-то я использую Delphi только как инструмент для построения OpenGL приложений, но настоятельно реккомендую вот такие линки:

http://delphi.mastak.ru
http://kol.mastak.ru
Здесь глобально вложились в проблему минимизации приложений по объёму и кажется не минули СУБД.

http://tek-tips.com
Самый крупный зарубежный форум, ответы приходят в течении нескольких часов, есть специальная группа специалистов для ответов, может там подскажут иные пути минимзации…

В любом случае Удачи )))))).
Вероника.



0



3926 / 2844 / 660

Регистрация: 08.06.2007

Сообщений: 9,641

Записей в блоге: 4

29.10.2009, 22:59

5

Размер exe-файла можно уменьшить, но тогда его нельзя будет запускать без набора dll, которые нужно будет распространять вместе с приложением. Это нужно зайти Project -> Options и там вкладка Packages. В ней нужно установить чекбокс Build with runtime packages.



0



creater

29.10.2009, 23:17

6

Извините, но могли бы Вы пояснить, что означает включение данного чекбокса? Прочто при его вкл активизируется строка с кучей библиотек которые мне вообще не нужны … вроде — xmlrtl, inet …
И при компиляции выдается ошибка — ‘Internal Error: LA30’

Ни разу не встречал такую ошибку…

3926 / 2844 / 660

Регистрация: 08.06.2007

Сообщений: 9,641

Записей в блоге: 4

29.10.2009, 23:41

7

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

Что же касается ошибки, то могу описать, что происходит у меня. У меня Delphi 7 Enterprise. Пустая форма компилируется в exe-файл 368128 байт. Если подключить пакеты времени выполнения (Runtime Packages) то получается файл 16896 байтов.

Наверно, выяснить подробности можно на специализированных форумах
http://delphi.mastak.com/ и http://delphi.vitpc.com/ А может и здесь кто-нибудь пояснит, как работать с пакетами.



0



creater

29.10.2009, 23:58

8

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

3926 / 2844 / 660

Регистрация: 08.06.2007

Сообщений: 9,641

Записей в блоге: 4

30.10.2009, 11:19

9

Эти библиотеки находятся в WINNT/SYSTEM32/ (файлы с расширением .bpl) У меня их 13 мегабайт. Нужны ли они все — не знаю.



0



creater

30.10.2009, 11:27

10

А что означает то, что они находятся в WINNT/SYSTEM32/?
Как быть относительно пользователя моей программы у еоторого нет никаких файлов относящихся к Делфи?

А библиотеки остаются только те которые в uses прописаны …

3926 / 2844 / 660

Регистрация: 08.06.2007

Сообщений: 9,641

Записей в блоге: 4

30.10.2009, 11:41

11

А ты сам пробуй. Вот я сейчас пустую форму компилил, отметив чекбокс. Текстовым редактором посмотрел в exe файле поиском расширения .bpl и выяснил, что он ссылается только на пакеты rtl70.bpl и vcl70.bpl. Если эти библиотеки убрать из system32, то программа не запускается. Если положить их, например, в ту же директорию, что и exe — запускается. Правда пакеты могут еще ссылаться друг на друга, например, vcl ссылается еще на что-нибудь и этот файл надо также учитывать как нужный. Короче надо работать и разбираться.



0



3926 / 2844 / 660

Регистрация: 08.06.2007

Сообщений: 9,641

Записей в блоге: 4

30.10.2009, 11:47

12

> А что означает то, что они находятся в WINNT/SYSTEM32/

Ну то есть файлы vcl70.bpl и другие с таким же расширением лежат в директории WINNT/SYSTEM32 (или WINDOWS/SYSTEM32, если у тебя система Windows 98).



0



3926 / 2844 / 660

Регистрация: 08.06.2007

Сообщений: 9,641

Записей в блоге: 4

30.10.2009, 11:50

13

Но по идее их можно положить в любую директорию, которая перечислена в переменной окружения PATH, либо в ту директорию, где находится exe, либо в рабочую директорию.



0



creater

30.10.2009, 11:54

14

Хлопотно с этими библиотеками … одна только vcl70.bpl 700 Кб весит. Тяжко … надо WinApi грысть или к KOL как то потступаться

3926 / 2844 / 660

Регистрация: 08.06.2007

Сообщений: 9,641

Записей в блоге: 4

30.10.2009, 19:07

15

А сколько весит операционная система? А вместе с Net Framework? Если отнестись к этим пакетам, как к части операционной системы, то всё не так страшно.



0



creater

30.10.2009, 19:32

16

Ну с операционкой сравнивать Я думаю не стоит, дабы не подвергнуть критике типа must die собственные программы
А размер программы, если бы это было на своей машине, нужно еще учитывать исходя из пересылки данного продукта через инет который не у всех через магистрали и т.д. … Да и в любом случае программы должны быть компактными …;-)

leska

24.12.2009, 21:49

17

Есть софтина такая — PeCompact называется. Очень даже неплохо помагает в таких случаях.

0 / 0 / 0

Регистрация: 04.11.2012

Сообщений: 10

09.01.2010, 19:53

18

PeCompact далеко не последняя в этом роде программа, есть еще наш ASPack, лучший (на мой взгляд) UPX и еще много подобных. Но если бы Вы знали как работает Windows (а вы ведь программисты, даже если начинаюшие — то должны учить то, где будете работать), то никогда бы не советовали побобных программ… А KOL это выход конечно, но лучше все же учить WinAPI.

З.Ы. И вообше не надо учиться программированию, пока слабо разбирается в компьютере, в том как он работает, тем более Windows’е.



0



leska

10.01.2010, 09:06

19

Хорошо. В PECompact, в частности, есть 2 способа уменьшения экзешника. Первый — чистка мусора из файла. Как он работает я точно не знаю (может кто просветит, и заодно расскажет, что в нем плохого). Второй — архивация файла. Т.е. протрамма в заголовок файла встраивает архиватор, и распаковывает его налету. Это требует немного больше памяти и времени. Если в наших условаиях эти параметры не столь критичны, то почему бы и не прибегнуть к этому способу?

З.Ы. может я ,конечно, чего-то не понимаю… Было бы интересно узнать, что именно.

creater

10.01.2010, 10:05

20

Лично Я для себя решил проблему размера исполняемого файла, пересев на CBuilder + архиватор upx. А вообще конечно нужно WinApi усилено юзать. Да и .NET надо познавать…

IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

10.01.2010, 10:05

20

Это перевод справочной системы Delphi.

Сообщение об ошибке Internal Error: X1234 указывает на то, что компилятор столкнулся с некоторой ситуацией, отличной от синтаксической ошибки, и он не может продолжить компиляцию.

Подсказка: в коде ошибки Internal error зашифрован файл и строка в исходниках компилятора, где возникла ошибка. Эта информация может помочь технической поддержке выявить проблему. Не забудьте записать эту информацию и прикрепить её к своему отчёту об ошибке.

Как избавится от Internal error

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

Если проблема всё ещё существует

  • Удалите все .dcu(il) файлы, связанные с вашим проектом.
  • Полностью закройте ваш проект (File/Close all).
  • Заново откройте свой проект. Это очистит кэш модулей в IDE. Как вариант — вы можете перезапустить IDE.
  • Ещё вариант — попробовать перекомпилировать приложения используя команду Build (а не Compile) — при этом компилятор пересоздаст все dcu(il) файлы.

Если ошибка не уходит, закройте IDE и попробуйте перекомпилировать приложение, используя компилятор командной строки (dcc(il).exe). Это исключит из рассмотрения кэширование юнитов в IDE.

Проанализируйте свой код от последнего изменения

Если проблема ещё актуальна, вернитесь к тому месте в коде, где вы последний раз что-то меняли и просмотрите свой код. Обычно, большинство ошибок internal error могут быть воспроизведены всего несколькими строками кода и часто при этом код использует синтаксические конструкции, которые используются довольно редко. В этом случае, попробуйте модифицировать код, чтобы он выполнял свою работу, но другим способом. Например, если вы используете приведение типа в выражении, попробуйте объявить переменную нужного типа и сначала присвоить ей значение, а уж потом использовать её в выражении:

begin
    if Integer(b) = 100 then...
end;
var
 a: Integer;
begin
  a := b;
  if a = 100 then...
end;

А вот пример неожиданного кода, который вы можете исправить для избавления от ошибки:

var
    A : Integer;
begin
 { Второе преобразование A в Int64 не нужно; если вы уберёте его, это может избавить вас и от Internal Error. }
 if Int64(Int64(A))=0 then
end;

Если проблема связана с циклом while…do — попробуйте заменить его на for…do. Хотя эти изменения не исправляют глюк компилятора, они могут помочь вам продолжать работать над своим приложением. Если ваши изменения избавляют вас от ошибки, это не значит, что все while или for циклы глючат — скорее вы используете их несколько необычным образом.

Как только вы смогли изолировать проблему — было бы не плохо сделать минимально возможный тестовый пример-проект, который демонстрирует возникновение вашей ошибки и выслать его на 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.

Глюки компиляторов

Меня например в дельфи изрядно достала internal error LA30 — такое впечатление что начиная с определенного обьема исходника определенного типа, у дельфи сносит крышу, бывают и другие Internal error при компиляции периодически (но не всегда) — причем практически независимо от версии дельфи (начиная от 6 до 2007 с апдейтами и без) — с апдейтами правда пореже все же.
Для LA30 помогает повторная перекомпиляция, для некоторых других — только перезапуск дельфи.

Собственно вопрос: встречаетесь ли вы с ними и какие методы решения проблем используете (не только для дельфи)?.

А версия дельфей какая?

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

А версия дельфей какая?

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

имхо, истинное сборище глюков и недоделанностей — визуальная среда для разработки приложений, работающих с БД в Visual C# в 2005-й студии.. нигде больше такого кошмара не встречал.

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

Это не глюк, читаем стандарт (например этот кусок):
1.9.3 Certain other aspects and operations of the abstract machine are described in this International Standard as unspecified (for example, order of evaluation of arguments to a function).

+ тоже самое касается вызова выражений (5.4)
Except where noted, the order of evaluation of operands of individual operators and subexpressions of individual expressions, and the order in which side effects take place, is unspecified:
i = v[i++]; // the behavior is unspecified
i = 7, i++, i++; // i becomes 9
i = ++i + 1; // the behavior is unspecified
i = i + 1; // the value of i is incremented

Это не то — я ведь не об этом речь веду.
Этот пост не об особенностях работы оптимизации/логики языка или об ошибках в исходниках — он только об именно нестабильной работе компиляторов на совершенно адекватных исходниках с необьяснимыми ошибками на ровном месте (в том числе случайном месте). Дело в том что исходники нормально компилируются и работают — другое дело компиляция не всегда успешно проходит, причем ошибки именно что внутренние (то есть коды этих ошибок то и не должен видеть пользователь — они только для разработчиков компилятора).
Версии дельфи указаны в посте.

Ну и отошлите эти коды вместе со своими исходниками разработчикам компилятора. Они вам и ответят. Заодно и компилятор подправят в новой версии (если это действительно в нем проблема).

Хотя судя по описанию, проблема в вашей машине (аппаратная возможно память или софтовая возможно настройки ОС), проверяется простой проверкой, компиляцией на другой машине (у знакомых, друзей, соседей ) можно в другой версии компилятора. Если проблема пропала, значит проблема в вашей машинке, если осталась, значит в компиляторе.

10000 строк) файлах, но вылечилось это тогда переустановкой системы.

deni,
Вот поэтому и сказал что не совсем глюк =) Просто некоторые неопытные люди любят использовать такие конструкции, после чего убивают сутки на отладку

Они вам и ответят.
«Купите лицензию»?)

.
i = v[i++]; // the behavior is unspecified
i = 7, i++, i++; // i becomes 9
i = ++i + 1; // the behavior is unspecified
i = i + 1; // the value of i is incremented
Что значит unspecified. Постфиксный и префиксный инкременты же стандартизированны. И я ни когда сам не наталкивался на глюки компиляторов в этом вопросе, только на свои.
1-й и 3-й примеры дожны быть ещё как specified:
в первом должнен взяться i-й элемент массива и только после пройти инкремент.
в третьем инкремент префиксный и должен отработать до прибавления единицы, и i в итоге увеличится на 2.
И всегда на моём личном опыте так было, и с gcc и с vc.

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

А по теме, меня достаёт один глюк в gcc-4.1.2, он иногда считает private поле какого-либо класса недоступным другому, хотя указано, что этот другой ему friend-ом является. А обновить gcc нет возможности из-за того, что он основа дистрибутива gentoo

Что значит unspecified. Постфиксный и префиксный инкременты же стандартизированны.

Почитай стандарт, а? Я даже пункты указал.

По теме, gcc тот еще глюкодел. Вот, например, в нем такое прокатывает:
void func(int n) < int arr[n]; /* тут чето делаем с arr */ >
В правильных компайлерах ессно нет.

Ну и отошлите эти коды вместе со своими исходниками разработчикам компилятора. Они вам и ответят. Заодно и компилятор подправят в новой версии (если это действительно в нем проблема).

Хотя судя по описанию, проблема в вашей машине (аппаратная возможно память или софтовая возможно настройки ОС), проверяется простой проверкой, компиляцией на другой машине (у знакомых, друзей, соседей ) можно в другой версии компилятора. Если проблема пропала, значит проблема в вашей машинке, если осталась, значит в компиляторе.

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

Гыы, прокатывает.
По мне так это не глюк, просто gcc во многих местах отклоняется от стандарта, позволяя делать то, что стандартом запрещено.
Собственно что здесь такого плохово? Просто обявили локальный массив int-ов размером n. Другое дело что n это переменная, а стандартом помоему запрещено создавать нединамические массивы произвольной длины.

Все что отходит от стандарта — глюк (юзать надо _alloca). В частности, весь CLI в VC один большой и жирный глюк (эт шютк) А на сичот, что плохого в отходе от стандарта. ну подумай сам.

Порой стоит задуматься — а нужна ли эта мифическая близость к стандарту.
А вообще гцц действительно по сравнению с остальными наиболее стандартен )

Порой стоит просто задумацца, а стоило ли задумывацца И «более стандартен» Comeau, если на то уж пошло.

Источник

Блог GunSmoker-а (переводы)

. when altering one’s mind becomes as easy as programming a computer, what does it mean to be human.

вторник, 25 ноября 2008 г.

Получили Internal error в Delphi?

Это перевод справочной системы Delphi.

Сообщение об ошибке Internal Error: X1234 указывает на то, что компилятор столкнулся с некоторой ситуацией, отличной от синтаксической ошибки, и он не может продолжить компиляцию.

Подсказка: в коде ошибки Internal error зашифрован файл и строка в исходниках компилятора, где возникла ошибка. Эта информация может помочь технической поддержке выявить проблему. Не забудьте записать эту информацию и прикрепить её к своему отчёту об ошибке.

Как избавится от Internal error

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

Если проблема всё ещё существует

  • Удалите все .dcu(il) файлы, связанные с вашим проектом.
  • Полностью закройте ваш проект (File/Close all).
  • Заново откройте свой проект. Это очистит кэш модулей в IDE. Как вариант — вы можете перезапустить IDE.
  • Ещё вариант — попробовать перекомпилировать приложения используя команду Build (а не Compile) — при этом компилятор пересоздаст все dcu(il) файлы.

Если ошибка не уходит, закройте IDE и попробуйте перекомпилировать приложение, используя компилятор командной строки (dcc(il).exe). Это исключит из рассмотрения кэширование юнитов в IDE.

Проанализируйте свой код от последнего изменения

Если проблема ещё актуальна, вернитесь к тому месте в коде, где вы последний раз что-то меняли и просмотрите свой код. Обычно, большинство ошибок internal error могут быть воспроизведены всего несколькими строками кода и часто при этом код использует синтаксические конструкции, которые используются довольно редко. В этом случае, попробуйте модифицировать код, чтобы он выполнял свою работу, но другим способом. Например, если вы используете приведение типа в выражении, попробуйте объявить переменную нужного типа и сначала присвоить ей значение, а уж потом использовать её в выражении: А вот пример неожиданного кода, который вы можете исправить для избавления от ошибки: Если проблема связана с циклом while. do — попробуйте заменить его на for. do. Хотя эти изменения не исправляют глюк компилятора, они могут помочь вам продолжать работать над своим приложением. Если ваши изменения избавляют вас от ошибки, это не значит, что все while или for циклы глючат — скорее вы используете их несколько необычным образом.

Как только вы смогли изолировать проблему — было бы не плохо сделать минимально возможный тестовый пример-проект, который демонстрирует возникновение вашей ошибки и выслать его на 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.

Источник

Access Error [Fatal Error] Internal Error: LA30

I’m getting Internal Error: LA30 every time I Run the application in delphi. The exact error is «Access violation at address 07262AF7 in module ‘RLINK32.DLL’ Read of Address 00000000»

I did remove all DCU files as indicated and rebuils but the same error still. Is their ay to troubleshoot this or bypass this error?

ASKER CERTIFIED SOLUTION

It is reported as fix, though. Have you installed the latest service packs? Which Delphi version anyways?

I’m going out for an a couple of hours and when I return everything is a mess 😛

erwin: post a message in communicty support asking to reopen the question. then you’ll be able to split points via the split points link.

alex: tell you the truth I didn’t notice that IA30 thing :)) I just saw the message and my brain suddenly pushed the answer on the stack. I tend to overlook details on apparently easy questions 😀

Lol, ciuly. I already noticed that you were going a bit into the wrong direction so I tried to put you back on a straight path. But Erwin found the solution all by himself so actually I wonder if he should ask for a refund instead. 😉
Of course, having the points split between the participants just for their participation isn’t bad either. 🙂 It’s not that the points are that important to me anyways but it shows future readers which remarks were most helpful in finding the answer.

And Erwin, you can go to community support and ask them to re-open thquestion so you can split the points if you want to, or ask for a refund since you solved the problem yourself. The latter is advisable when your question points are limited at EE. Not everyone here has an unlimited amount.

Источник

How to solve Delphi’s [Pascal Fatal Error] F2084 Internal Error: LA33?

I’m really sick of this problem. Google searches always seem to suggest «delete all bpls for the package», «delete all dcus». Sometimes this just-does-not-work. Hopefully I can get some other ideas here.

I have a package written in-house, which had been installed without issue a few months ago. Having made a few changes to the source, I figured it was time to recompile/reinstall the package. Now I get two errors, the first if I choose «install» is

Access violation at address 02422108 in module ‘dcc100.dll’. Read of address 00000000.

. or if I try to build/compile the package, I get

[Pascal Fatal Error] F2084 Internal Error: LA33

This is one of those Delphi problems that seems to occur time and time again for many of us. Would be great if we could collate a response something along the lines of «any one or combination of these steps might fix it, but if you do all these steps it will fix it. «

At the moment, I’ve removed all references to the bpl/dcp files for this package, but still getting the same error.

Using BDS2006 (Delphi)

Update 01-Oct-2008: I managed to solve this — see my post below. As I can’t accept my own answer, I’m not entirely sure what to do here. Obviously these types of issues occur frequently for some people, so I’ll leave it open for a while to get other suggestions. Then I guess if someone collates all the info into a super-post, I can accept the answer

Источник

Понравилась статья? Поделить с друзьями:
  • Internal error java io ioexception cannot find intellij idea project files at
  • Internal error insufficient memory принтер samsung
  • Internal server error console
  • Internal server error booking
  • Internal server error avito