Форум программистов Vingrad
Модераторы: Snowy, MetalFan, bems, Poseidon |
Поиск: |
|
Опции темы |
Dmitry_177 |
|
||
Опытный Профиль Репутация: нет
|
Delphi 7, Windows XP |
||
|
|||
Dmitry_177 |
|
||
Опытный Профиль Репутация: нет
|
А еще я заметил если Delphi выключить когда в процессе работы выскакивала вот эта ошибка, то после того как она закроется выскакивает куча ошибок в MessageBox-е.. Приходится через диспечер задачь выключать процесс delphi32.exe |
||
|
|||
drkot |
|
||
Ищущий Профиль Репутация: нет
|
Скорее всего кривенькие компоненты (эксперты) используеш, которые в режиме разработки юзают ole. ——————— Ошибка не становится истиной по причине широкого распространения, |
||
|
|||
Dmitry_177 |
|
||
Опытный Профиль Репутация: нет
|
drkot, стандартные vcl-компоненты.. все из поставки с Delphi, ниодного со стороны..=) |
||
|
|||
Snowy |
|
||
Эксперт Профиль
Репутация: 31
|
Закрой текущий unit и открой заново |
||
|
|||
drkot |
|
||
Ищущий Профиль Репутация: нет
|
С Twebbrowcer или другими activex, работаеш? ——————— Ошибка не становится истиной по причине широкого распространения, |
||
|
|||
Dmitry_177 |
|
||
Опытный Профиль Репутация: нет
|
нет, и без всяких activex-ов.. У меня обычная программа.. стандартные кнопки Edit-ы, и еще StringGrid да и PageControl. Но программа еще использует Soket-ы, функции напрямую из библиотеки WinSock, т.е. безовсяких компонентов.. А еще блин говорят что семерка самая устойчивая… Интересно а Borland там не собирается создавать обновление для Delphi 7? Неужели они уже закончили ее поддержку? |
||
|
|||
lukas |
|
||
Опытный Профиль Репутация: 3
|
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=892 ——————— http://code.google.com/p/orionphp/ — opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
||
|
|||
Dmitry_177 |
|
||
Опытный Профиль Репутация: нет
|
Нашел в интернете Delphi 7 Second Edition v7.2, это таже семерка только новее??? У меня стоит Delphi 7 Enterprise 7.0(Build 8.1) с первым обновлением, так вот Delphi 7 Second Edition v7.2 получается новее??? Может ее поставить, вдруг не будет этой ошибки? В чем различие в редакциях Second Edition и Enterprise? |
||
|
|||
Yanis |
|
||
Эксперт Профиль
Репутация: 6
|
SE кажись пиратка ———————
|
||
|
|||
Dmitry_177 |
|
||
Опытный Профиль Репутация: нет
|
Кстати у меня действительно Finalize использовалось в коде.. как переделал на SetLength(.., 0) то все нормально стало =))) Спасибо! Ноу меня вопросик раз уж я уже заякнулся о Finalize и SetLength: Желательно ли после SetLength(.., 0) переменной массива присваивать nil? Массив у меня из Integer-ов Добавлено через 2 минуты и 35 секунд
|
||
|
|||
Yanis |
|
||
Эксперт Профиль
Репутация: 6
|
Нет, если где то не стоит проверка на то что a может быть nil. ———————
|
||
|
|||
Snowy |
|
||
Эксперт Профиль
Репутация: 31
|
Это допустимо, но не имеет смысла. |
||
|
|||
|
Правила форума «Delphi: Для новичков» | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) |
0 Пользователей: |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
← →
Dmitry_177
(2007-05-15 20:22)
[0]
При компиляции очень часто возникает: [Fatal Error] Internal error: L681 но потом если ничего не меняв опять запустить компиляцию то все проходит нормально.. подскажите что это может быть?
← →
Dmitry_177
(2007-05-15 23:35)
[1]
А еще я заметил если Delphi выключить когда в процессе работы выскакивала вот эта ошибка, то после того как она закроется выскакивает куча ошибок в MessageBox-е.. Приходится через диспечер задачь выключать процесс delphi32.exe
← →
Loginov Dmitry ©
(2007-05-16 09:00)
[2]
Поищи в Гугле.
В D7 очень много касяков. Особенно это заметно при разработке больших проектов. Например, один известный касяк, парализующий работу компилятора D7 — это когда внутри процедуры объявляешь процедурный тип со строковыми параметрами по-умолчанию:
procedure Proc;
type
TMyProc = procedure(S: string = "stroka");
begin
{...........}
end;
Но просто так эту ошибку врядли воссоздашь — зависит от расположения звезд.
> то после того как она закроется выскакивает куча ошибок
> в MessageBox-е.. Приходится через диспечер задачь выключать
> процесс delphi32.exe
Этот баг вообще неотъемлемая часть Delphi 7. Без него Дельфи — не Дельфи :))
← →
Влад
(2007-05-16 10:57)
[3]
Перейди на другой D. Там не будет этой ошибки, но будут другие
← →
Dmitry_177
(2007-05-16 17:36)
[4]
А еще блин говорят что семерка самая устойчивая…
Интересно а Borland там не собирается создавать обновление для Delphi 7? Неужели они уже закончили ее поддержку?
← →
clickmaker ©
(2007-05-16 18:02)
[5]
> При компиляции очень часто возникает: [Fatal Error] Internal
> error: L681
у меня не возникало почему-то
D7 Upd pack 1
← →
Dmitry_177
(2007-05-16 19:46)
[6]
Нашел в интернете Delphi 7 Second Edition v7.2, это таже семерка только новее??? У меня стоит Delphi 7 Enterprise 7.0(Build 8.1) с первым обновлением, так вот Delphi 7 Second Edition v7.2 получается новее??? Может ее поставить, вдруг не будет этой ошибки?
В чем различие в редакциях Second Edition и Enterprise?
← →
Anatoly Podgoretsky ©
(2007-05-16 20:59)
[7]
Это не Борланд, а ворованая, изуродованная Дельфи.
Держись от нее подальше. Волосы будут шелковистые.
← →
Dmitry_177
(2007-05-16 21:34)
[8]
Я разобрался с этой проблемой:
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=892
А я какраз и использовал Finalize в программе, а сейчас все нормально =)
|
|
|
Пожалуйста, выделяйте текст программы тегом [сode=pas] … [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как «свернуть» программу в трей.
3. Как «скрыться» от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
… (продолжение следует) …
Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка — 60 дней. Последующие попытки бан.
Мат в разделе — бан на три месяца…
[Fatal Error] Internal error: L681
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Junior Рейтинг (т): 4 |
Привет всем!!!!!!!! [Fatal Error] Internal error: L681 при повторной компиляции все нормально. А также эта ошибка происходит при выполнении Build All Projects Может кто знает что за ошибка? |
Voice |
|
у меня такая же хрень возникает. |
kanes |
|
user_for_all,Voice, почитайте хелп в разделе Internal Errors, может найдете ответ |
user_for_all |
|
Junior Рейтинг (т): 4 |
У меня тоже большой проект. а работаю на D7. Сообщение отредактировано: user_for_all — 01.07.05, 12:16 |
kanes |
|
Цитата user_for_all @ 01.07.05, 12:15 вот если средний уже Дельфа не хочет вообще компелить. Что делать не знаю А перезапустить Delphi не помогает? |
user_for_all |
|
Junior Рейтинг (т): 4 |
Цитата А перезапустить Delphi не помогает? Тень непомагает Voice дело в том что в Help’e написанно приблезительно следующее var A : Integer; begin { Below the second cast of A to In64 is unnecessary; removing it can avoid the Internal Error. } if Int64(Int64(A))=0 then end; т.е. приведение типов. да но у меня в коде только лишь в одном месте встречается приведение типов. а ошибка возникает даже и при коментировании этого кода Добавлено 01.07.05, 12:23 Сообщение отредактировано: user_for_all — 01.07.05, 12:25 |
volvo877 |
|
user_for_all, вот это прочти тоже: |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- Delphi: Общие вопросы
- Следующая тема
[ Script execution time: 0,0299 ] [ 16 queries used ] [ Generated: 12.02.23, 18:38 GMT ]
Это перевод справочной системы 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.
creater |
|
1 |
|
Как правильно компилировать программу в Дельфях???27.10.2009, 13:05. Показов 6497. Ответов 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, но СУБД ох как не моя стихия http://delphi.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 … Ни разу не встречал такую ошибку… |
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 байтов. Наверно, выяснить подробности можно на специализированных форумах
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 |