1 / 1 / 0 Регистрация: 30.10.2016 Сообщений: 26 |
|
1 |
|
19.11.2016, 17:35. Показов 14669. Ответов 2
Calc.lpr(20,1) Error: Can’t create object file: Calc.exe (error code: 5) Делал, делал калькулятор, а тут вот такое, а главное раньше всё нормально было, сейчас запускаю, а он выдаёт это
__________________
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
19.11.2016, 17:35 |
2 |
551 / 875 / 144 Регистрация: 10.08.2015 Сообщений: 4,513 |
|
21.11.2016, 00:49 |
2 |
посмотри в диспетчере задач процесс Calc.exe. Вероятнее всего ошибка в твоей программе. Если программа завершена некорректно, то процесс не завершается и в следующий раз при попытке создать одноименный процесс происходит ошибка.
1 |
0 / 0 / 0 Регистрация: 22.05.2019 Сообщений: 35 |
|
24.11.2019, 10:04 |
3 |
Calc.lpr(20,1) Error: Can’t create object file: Calc.exe (error code: 5) Смотри ты запустил проект, и запустил exe файл. Из за этого не работает
0 |
Topic: Can’t create object file (error code:5) (Read 14847 times)
I was getting this error during the build operation of a new project:
-
Free Pascal Compiler version 3.0.0 [2016/02/14] for i386
-
Copyright (c) 1993—2015 by Florian Klaempfl and others
-
(1002) Target OS: Win32 for i386
-
(3104) Compiling project1.lpr
-
(3104) Compiling unit1.pas
-
(9022) Compiling resource U:Micheuslibi386—win32project1.or
-
(9015) Linking project1.exe
-
U:Micheusproject1.lpr(20,1) Error: (9003) Can‘t create object file: project1.exe (error code: 5)
-
U:Micheusproject1.lpr(20,1) Fatal: Can’t create executable project1.exe
-
Fatal: (1018) Compilation aborted
By looking at the forum I found this comment in a thread which was related to the same error:
Before we go to far here, I just found something that is intriguing. I copied the project files to a different folder, renamed them, saved them from the Lazarus environment to the new folder and now the project compiles, creates the exe and runs. Is my project name the issue??
Then I thought the error would be related to the place where I’m storing the project.
I was initially using a mapped hard driver (U: — pointing to a folder in another PC), but after I read that post I moved my project to my local hard driver (C:) and it compiled without error.
As a side note, the U: is a shared folder in local and external hard driver, so I also used the real path (z:usersMicheusproject1.lpr) and it compiled fine too.
So, Not be able to build in a «remote» folder is an correct/acceptable behavior?
Logged
It looks like the compiler accepts the mapped folder OK, but the linker not.
Do you use the built-in linker or an external linker?
Logged
Note that if project1.exe is running… (anywhere) that will also generate this error because the exe is then locked. Detaching the debugger can help as well.
Logged
«Looks» OK, doesn’t mean it is IS OK.
It looks like the compiler accepts the mapped folder OK, but the linker not.
Do you use the built-in linker or an external linker?
Lazarus 1.6 + FPC 3.0.0
From the IDE Options:
-
Lazarus directory: Z:UsuariosMicheusInstalationslazarus
-
Compiler executable: Z:UsuariosMicheusInstalationslazarusfpc3.0.0bini386—win32fpc.exe
-
FPC source directory: $(LazarusDir)fpc$(FPCVer)source
-
Make executable: $Path($(CompPath))make.exe
But, Lazarus is started from an shortcut this way: U:MicheusInstalationslazaruslazarus.exe
Could that be the problem?
Note that if project1.exe is running… (anywhere) that will also generate this error because the exe is then locked.
That is not the case.
Although I used a new project «project1.lpr» to generate the error to be reported here, my project is named and is a fresh one — never used that name before and even this PC.
Logged
Содержание
- error messages
- Contents
- Errors during compilation
- Errors during program execution
- If the bug is already known
- If the bug is not already known
- Ошибка при запуске старого проекта — Lazarus
- Ошибка при запуске старого проекта — Lazarus
- Лазарь (Паскаль) RunError (5)
- 1 ответ
- Lazarus Faq/ru
- Contents
- Общее
- Почему получаемые бинарные файлы очень большие?
- УСТАРЕЛО: Почему компоновка такая медленная в Windows?
- Мне нужен ppc386.cfg или fpc.cfg?
- Как я могу скомпилировать lazarus?
- Как собирать LCL проекты без Lazarus-а?
- Какая версия FPC требуется?
- Я не могу скомпилировать Lazarus
- При компиляции проекта возникает ошибка:
- «Cannot find Unit interfaces». Как можно это исправить?
- Когда я пытаюсь откомпилировать проект Delphi в lazarus, я получаю сообщение об ошибке
- Ошибка на строке :<$R *.DFM>. Как мне решить эту проблему?
- Ошибка: ‘Identifier not found LazarusResources’.
- При обращении к событиям объектов, например OnClick объекта button, я получаю следующую ошибку: ERROR unit not found: stdCtrls
- Как внедрять содержимое небольшого файла в исполняемый файл? Как внедрять ресурсы?
- Что означают различные расширения файлов, используемые Lazarus?
- Когда я пишу var mytext: text;, чтобы объявить текстовый файл, я получаю ошибку «Unit1.pas(32,15) Error: Error in type definition». Как можно это исправить?
- Я получаю ошибку при использовании Printer.BeginDoc
- Почему TForm.ClientWidth/ClientHeight — это то же самое, что и TForm.Width/Height?
- Отладка
- Как увидеть отладочные сообщения?
- Как мне просмотреть значение свойств?
- Почему отладчик не показывает некоторые переменные или структуры (выдавая ошибки «no such symbol»/»incomplete type»)
- Как я могу проводить отладку компонентов и пакетов FCL с помощью Lazarus
- Contributing / Making Changes to Lazarus
- Я создал патч для пристыковки окна сообщений IDE к окну «Редактор исходного кода» (снизу)
- Я исправил/улучшил Lazarus. Как добавить мои изменения в официальный код Lazarus?
- How can I become a Lazarus developer and access management in the SVN and bug-tracker?
- Где объявлены .
- Константы виртуальных клавиш
- Использование среды разработки
- Как я могу использовать «завершение идентификаторов»?
- Linux
- Как выполнить отладку в Linux без IDE?
- I can debug now but ddd does not find my sources or complains that they contain no code. Whats that?
- «> I receive an error during the linking that states /usr/bin/ld can’t find -l
- How can I convert a kylix 2 project into a lazarus project?
- When compiling lazarus the compiler can not find a unit. e.g.: gtkint.pp(17,16) Fatal: Can’t find unit GLIB
- I have installed the binary version, but when compiling a simple project, lazarus gives: Fatal: Can’t find unit CONTROLS
- Lazarus компилируется, но компоновка прерывается с ошибкой: libgdk-pixbuf not found
- Я использую SuSE, при компиляции получаю ошибку: «/usr/bin/ld: cannot find -lgtk Error: Error while linking»
- Лазарус после установки компонента падает с ошибкой runtime error 211
- Когда я запускаю программу, использующую потоки (threads), я получаю сообщение об ошибке «runtime error 232»
- У меня Ubuntu Breezy/Mandriva KDE3 и шрифты в Lazarus IDE выглядят слишком большими
- Как подключать и использовать сторонние файлы ресурсов (*.rc) в GTK приложении?
- I have Ubuntu and I cannot compile for Gtk2 due to missing libraries
- How can I compile a program for Gtk2?
- I get this message: «[WARNING] ** Multibyte character encodings (like UTF8) are not supported at the moment.»
- Windows
- &_was_unexpected_at_this_time.»> When I cycle the compiler, I get:The name specified is not recognized as an internal or external command, operable program or batch file.>& was unexpected at this time.
- When I cycle the compiler, I get: make[3]: ./ppc1.exe: Command not found
- When I try to make Lazarus I get:
- make.exe: * * * interfaces: No such file or directory (ENOENT). Stop.make.exe: * * * [interfaces_all] Error 2
- makefile:27: *** You need the GNU utils package to use this Makefile. Stop.
- How can I give my program an XP look like lazarus has?
- Когда я запускаю Windows программу, созданную в Lazarus-е, открывается консольное (DOS) окно
- Mac OS X
- Why does compiling a project fail with ‘unknown section attribute: no_dead_strip’?
- Лицензирование
- Могу ли я создавать коммерческие приложения, используя Lazarus?
- Могу ли использовать в коммерческих приложениях дополнительные компоненты Lazarus?
- Как я могу узнать, что компонент является частью LCL?
- Могу ли я создавать коммерческие плагины для Lazarus?
error messages
Contents
Errors during compilation
Unless the error identifies itself as an internal compiler error, it is unlikely that the error is caused by a bug in the compiler or its runtime library. Syntax errors are almost always due to incorrect code. Refer to the FPC Parser Messages documentation for a listing of the various Error and Warning messages produced by the FPC Parser along with explanations of them.
If you encounter an error while compiling your code and are unable to resolve it yourself, please use the FPC and Lazarus Forums, write to the Lazarus or Free Pascal mailing list or join the #fpc or #lazarus-ide IRC channel. The problem may then be solved more quickly.
If an error is encountered during compilation, the compiler does not generate an executable program. See further compile time errors.
Errors during program execution
The Free Pascal Compiler inserts code to detect a large number of error situations which might occur during program execution (eg divide by zero). If such an error situation occurs, the standard run-time library will terminate the program and print a runtime error number and the address at which the error occurred. See further runtime errors.
If you encounter a runtime error while running your program and are unable to resolve it yourself, please use the FPC and Lazarus Forums, write to the Lazarus or Free Pascal mailing list or join the #fpc or #lazarus-ide IRC channel.
If the bug is already known
Use the FPC and Lazarus Bug Tracker’s search capabilities.
Known issues. Tip: If you are experiencing problems, for example with TEdit.SelStart -> try searching «SelStart» (in quotes). If the bug is known:
- reopen if the issue is resolved or the issue is closed — use the Reopen Issue button.
- add your own note to the discussion if you received this error in another situation.
To observe any changes to your bug report — use the Monitor Issue button.
Note: You need to login to your account: Login/Create an account.
If the bug is not already known
- Go to the FPC and Lazarus Bug Tracker.
- You must be logged in: Login/Create account.
- Visit Report Issue. Fill in as many fields as possible. The more accurate the better.
- The OS and Product Version fields are especially important. If the data is not enough, they will not help you! Don’t forget to mention the system features (big endian or 64-bit).
- It is often helpful to send in a small test program to resolve the problem as soon as possible.
- If you find graphic artifacts, it would not be superfluous to send a screenshot (in png or jpeg, but not in BMP!).
- If it fails, try creating a backtrace. More information — Creating a Backtrace with GDB.
- If possible, observe the behaviour of the buggy program on different platforms or with different widgetsets.
It is also possible to get a bug fixed by paying for a solution, see Bounties.
Источник
Ошибка при запуске старого проекта — Lazarus
Я использую объект pascal в lazarus. Когда я открываю старый проект и пытаюсь запустить его; это окно кода появляется в редакторе исходного кода:
Это всплывающее окно окна кода в ошибках исходного окна сопряжено с этими ошибками:
TimeKeeper.lpr(20,1) Ошибка: не удается создать объектный файл: TimeKeeper.exe (код ошибки: 5) TimeKeeper.lpr(20,1) Ошибка: невозможно создать исполняемый файл TimeKeeper.exe
Кто-нибудь знает, что такое обходной путь?
Сообщение об ошибке указывает, что объектный файл не может быть создан, что приводит к тому, что приложение не создается. Код ошибки 5 означает отказ в доступе, что означает, что вы не имеете права на запись в каталог, в котором компилятор и компоновщик пытаются сохранить вывод, или исполняемый файл используется и не может быть заменен (возможно, антивирусным программным обеспечением), или он был сделан только для чтения.
Если проблема связана с правами, решение должно либо получить достаточные права на каталог, либо изменить путь вывода проекта к каталогу, в котором у вас есть достаточные права. Обычно это делается в Project-> «Параметры» в главном меню.
Если это связано с антивирусным программным обеспечением или другим процессом, использующим исполняемый файл, отключите программное обеспечение AV или предоставите правило исключения, которое предотвращает сканирование этой папки.
Если проблема вызвана тем, что файл доступен только для чтения, измените атрибуты файла, чтобы удалить этот атрибут.
Источник
Ошибка при запуске старого проекта — Lazarus
Я использую объект паскаль в lazarus. Когда я открываю старый проект и пытаюсь его запустить; это окно кода появляется в редакторе исходного кода:
Это всплывающее окно окна кода с ошибками исходного окна связано с этими ошибками:
TimeKeeper.lpr(20,1) Error: Can’t create object file: TimeKeeper.exe (error code: 5) TimeKeeper.lpr(20,1) Error: Can’t create executable TimeKeeper.exe
Кто-нибудь знает, что такое обходной путь?
Сообщение об ошибке указывает, что объектный файл не может быть создан, в результате чего приложение не создается. Код ошибки 5 означает, что доступ запрещен , что означает, что у вас нет доступа для записи в каталог, в котором компилятор и компоновщик пытаются сохранить выходные данные, или исполняемый файл используется и не может быть заменен (возможно, антивирусным программным обеспечением. ), либо он стал доступен только для чтения.
Если проблема связана с правами, решение состоит в том, чтобы либо получить достаточные права на каталог, либо изменить выходной путь проекта на каталог, в котором у вас есть достаточные права. Обычно это делается в Project-> Options в главном меню.
Если это связано с антивирусным программным обеспечением или другим процессом, использующим исполняемый файл, отключите антивирусное программное обеспечение или укажите правило исключения, которое предотвращает сканирование этой папки.
Если проблема вызвана тем, что файл доступен только для чтения, измените атрибуты файла, чтобы удалить этот атрибут.
Источник
Лазарь (Паскаль) RunError (5)
Моя программа завершается с помощью RunError (5), что предполагает, что она не может получить доступ к файлу, что должно быть. Я проверил, и файл используется должным образом, файл не предназначен только для чтения и т. Д. Программа создает файл .dat, если он не существует, и использует его для сохранения. Если я запустил программу, а файл не существует, файл будет создан, но после этого в том же исполнении программа не получит доступ к файлу. Это происходит ТОЛЬКО, если файл был создан в текущем исполнении.
Так вызываются процедуры (код довольно длинный, но я даю вам несколько первых строк, в которых возникает ошибка):
А затем есть каждая из процедур:
1 ответ
Ошибка выполнения 5 означает отказано в доступе. Возможно, файл доступен только для чтения, и вы используете неправильный (по умолчанию) файловый режим, или вы пытаетесь повторно открыть файл с новым дескриптором файла, не закрывая его раньше (где-то в то время и повторяющиеся циклы, возможно, вы назначаете файл более одного раза, затем сброс не удается?).
Если я правильно сейчас помню, рабочий процесс для создания должен быть следующим:
AssignFile(f, filename); Rewrite(f); CloseFile(f);
И для существующего файла:
AssignFile(f, filename); Reset(f); CloseFile(f);
Видя другие ошибки, обнаруженные в вашем коде с помощью вопросов в комментариях, я настоятельно рекомендую вам уделять больше времени отладке, а когда возникают такие ошибки — вырезать ВСЕ не относящийся к делу код и проверить дизайн своего кода на случаи, подобные вышеизложенным (назначение файла перед его созданием , и т.д.).
Источник
Lazarus Faq/ru
Примечание: Этот FAQ может быть устаревшим в некоторых частях.
Contents
Общее
Почему получаемые бинарные файлы очень большие?
Бинарные файлы очень большие из-за того, что включают в себя много отладочной информации для использования в отладчик gdb (GNU Debugger). Компилятор имеет настройку для удаления отладочной информации из исполняемого файла (-Xs), но из-за ошибки в компиляторе (версия 2.0.2 и ниже) она не работает корректно. Ошибка исправлена в версиях компилятора 2.0.4 и выше.
Вы можете использовать программу «strip» для удаления отладочной информации из исполняемых файлов. Она находится в каталоге Lazarus’а: lazarusppbini386-win32.
Наберите «strip —strip-all » в командной строке.
Если Вы хотите сделать Вашу программу очень маленькой, то Вы можете попробовать использовать UPX. UPX — это очень хороший exe-упаковщик. It includes no memory overhead due to in-place decompression. И также имеет очень быструю распаковку (
10 МБ/сек на Pentium 133).
Для использования upx наберите «upx » в командной строке.
После использования strip и upx простая GUI программа на Lazarus’е получается:
420Кб на Windows
Для более детальной информации о недостатках использования UPX обратитесь к статье Размер имеет значение. Также нужно отметить, что «hello world» программы lazarus уже включают в себя множество возможностей, таких как:
- Библиотеку работы с XML
- Библиотеки для обработки файлов рисунков типа png, xpm, bmp и ico
- Практически все виджеты Lazarus Component Library (LCL)
- Все Runtime библиотеки Free Pascal
Всё это делает приложение большим, но это так же и включает всё, что может потребоваться нетривиальному приложению.
Начальный размер исполняемого файла Lazarus велик, однако растёт в дальнейшем довольно медленно. Проект на С++ (это для примера, но относится и к другим языкам / инструментальные средства тоже), сначала очень маленький (типа «Hello world»), но быстро растет по экспоненте, когда Вы добавляете дополнительные возможности, чтобы написать нетривиальное приложение.
Краткое руководство по уменьшению размера Lazarus/FPC приложения (проверено в Lazarus 0.9.26)
- 1. Project|Compiler Options|Code|Smart Linkable (-CX) -> Поставить галочку
- 2. Project|Compiler Options|Linking|Debugging|Display Line Numbers in Run-time ErrorBacktraces (-gl) -> Убрать галочку
- 3. Project|Compiler Options|Linking|Debugging|Strip Symbols From Executable (-Xs) -> Поставить галочку
- 4. Project|Compiler Options|Linking|Link Style|Link Smart (-XX) -> Поставить галочку
Самые важные элементы, мне кажется, 2 и 3. Для простого приложения выполнимый размер должен теперь составить 1-3 Мбайта вместо 15-20 Мбайт. В этом пункте Вы можете также попробовать: Project|Compiler Options|Code|Optimizations|smaller, вместо Faster -> Поставить галочку (Предупреждение: это может уменьшить производительность),
- 5. (Опционально) Запустите UPX для сжатия вашего бинарника дополнительно в 2-3 раза (Предупреждение: как сказано выше, есть недостатки в использовании UPX).
УСТАРЕЛО: Почему компоновка такая медленная в Windows?
Эта проблема свойственна лишь старым версиям: FPC 2.2 и Lazarus 0.9.24. Пожалуйста обновите Лазарус. Всё написанное здесь относится только к старым версиям.
В общем, компоновка на Windows занимает больше времени, чем на других платформах, потому что GNU компоновщик под эту операционную систему очень медленный. FPC (2.2) использует этот компоновщик при сборке программ. Эта проблема возникает только на Windows и только на слабых компьютерах (с процессором частотой менее 1ГГц и/или оперативной памятью меньше 128 Мегабайт)
Также, если вы используете умную компоновку (smartlinking), общее время компиляции так же увеличиться. Подробнее об этом можно прочитать здесь: File size and smartlinking
Для решения этой проблемы, был разработан внутренний компоновщик. Он есть во всех версиях FPC, начиная с 2.2. Его использование позволило в значительной степени сократить общее время компиляции. Внутренний компоновщик используется только при компиляции для Windows системы.
Мне нужен ppc386.cfg или fpc.cfg?
Вам нужен только fpc.cfg. В нем указаны пути, по которым компилятор будет искать библиотеки.
Как я могу скомпилировать lazarus?
Нет ничего проще 🙂
Как собирать LCL проекты без Lazarus-а?
- В тех случаях, когда использование графической среды невозможно, вы можете воспользоваться утилитой командной строки: lazbuild.
Эта утилита используется для сборки проектов и lazarus-пакетов (packages).
- Если вам нужно собрать LCL приложение без среды разработки и не используя lazbuild, вам необходимо добавить следующие строки в файл fpc.cfg
Где <целевая_система>это системный префикс, указывающий для какой системы располагаются модули. Обычно этот префикс представляет собой пару имён «Процессор-ОСь», например i386-win32, i386-linux, i386-darwin.:
После добавления этих строк в конфигурационный файл, вызовете команду: fpc myproject.lpr myproject.lpr это имя основного файла проекта (модуль начинающийся с «program» или «library»). Но имя может быть другим, т.к. Лазарус не принуждает Вас использовать расширение .lpr.
Кроме того, если Ваш проект использует какие-либо особые настройки, вы можете получить командную строку для компиляции, используя меню в Лазарусе: Проект->Параметры проекта. ->Показать параметры (параметров может быть очень много, удобно скопировать их в отдельный скрипт файл .bat или .sh);
Какая версия FPC требуется?
Версия 2.4.0 для всех операционных систем.
Я не могу скомпилировать Lazarus
- Проверьте версию компилятора
- Проверьте версию (fpc)библиотек, они должны быть той же версии
- Проверьте путь установки компилятора на наличие в нем пробелов. Пробелов в нем не должно быть!
- Проверьте наличие файла fpc.cfg, а не старого файла ppc386.cfg
- Проверьте также OS-dependent FAQs
При компиляции проекта возникает ошибка:
«Cannot find Unit interfaces». Как можно это исправить?
Ошибка возникает потомучто компилятор не может найти ‘interfaces.ppu’ или он найден, но он поврежден, неправильной версии или просрочен.
Этот модуль может находиться в lclunits—\interfaces.ppu. Например: /home/username/lazarus/lcl/units/i386-linux/gtk/interfaces.ppu.
Убедитесь, что он только здесь. Если находятся несколько версий interfaces.ppu, то вы возможно получите неверную конфигурацию (к примеру добавлен каталог lcl в список путей поиска). Удалите все interfaces.ppu, оставьте только тот что в каталоге указаном выше.
Если вы выберете другой widgetset, то при пересборке lazarus, понадобится пересобрать LCL для этого widgetset.
Если ошибка возникает несмотря на то что ‘interfaces.ppu’ на месте — значит используется, иная compiler/rtl для компиляции проекта нежели для компиляции Lazarus IDE. Можно сделать одно из следующего:
- Пересобрать LCL (или полностью Lazarus) с компилятором выбраным в Environmnent Options. Для этого можно кликнуть Tools -> Build Lazarus. Перед этим проверьте текущие настройки в Tools -> Configure Build Lazarus.
- Поменять компилятор в Environment Options на тот что используется для компиляции Lazarus. Посмотрите внимательно также в Environment Options что используются корректный путь к каталогу Лазаря (Lazarus Directory) и к исходникам FPC. Убедитесь что есть только только один файл конфигурации fpc.cfg — он должен располагаться /etc/ для Linux/Unix или вместе с компилятором fpc под Windows. Попробуйте запустить «fpc -vt bogus» для того чтобы увидеть какой fpc.cfg используется на вашей системе. Мешающие копии обычно появляются при обновлении компилятора; они могут находится в домашнем каталоге или вместе с пересобраным новым компилятором. УДАЛИТЕ ИХ!!
- Можно также попробовать сменить текущий widgetset проекта. Например, примерный проект «objectinspector» поставляемый с Лазарем поумолчанию использует gtk. Компиляция этого проекта наверняка выдаст «Can’t find unit interfaces» под Windows. Смена widgetset на default(Win32) в Project | Compiler Options. | LCL Widget Type (various) должно исправить это.
Когда я пытаюсь откомпилировать проект Delphi в lazarus, я получаю сообщение об ошибке
Ошибка на строке :<$R *.DFM>. Как мне решить эту проблему?
Lazarus (а точнее — Linux) не знает о таком понятии, как «ресурсы», и не может использовать некоторые связанные с ними понятия, пришедшие из Delphi/Win32. Однако, Lazarus использует методы, обеспечивающие совместимость с этими понятиями. Вы сможете использовать формы Delphi (файлы .dfm), если выполните следующие шаги:
- Используйте текстовые версии .dfm-файлов. D5 и более поздние версии используют такие файлы по умолчанию. Если у вас более старые файлы, выполните следующее: нажмите ALT-F12 для просмотра кода формы в виде текста и скопируйте/вставьте текст. Если у вас есть текстовый .dfm-файл, просто скопируйте его содержание в .lfm-файл.
- Создайте файл с помощью lazres (в меню lazarus/tools) следующей командой: lazres yourform.lrs yourform.lfm
- Добавьте следующую строку в секцию initialization:
Пожалуйста, помните, что не все свойства объектов, описанные в dfm-файлах, поддерживаются Lazarus, и часть из них может вызвать падения IDE.
Примечание: Вы не получите этой ошибки, начиная с версии Lazarus 0.9.29 (SVN) при использовании FreePascal 2.4.0 и выше. Компилятор этой версии умеет включать такие ресурсы в исполняемый файл на всех платформах. Тем не менее, проблема несовместимости отдельных свойств от этого не исчезает.
Ошибка: ‘Identifier not found LazarusResources’.
При создании формы Lazarus автоматически добавляет некоторые необходимые модули в секцию uses вашего модуля, содержащего форму. После конвертации из Delphi в модуле могут отсутствовать необходимые ссылки. В данном конкретном случае вам необходимо добавить в секцию uses модуль LResources.
При обращении к событиям объектов, например OnClick объекта button, я получаю следующую ошибку: ERROR unit not found: stdCtrls
Убедитесь (Project -> Project Inspector),что ваш проект зависит от пакета ‘LCL’ и что вы установили исходники FPC.
Lazarus — это IDE (среда разработки) и библиотека визуальных компонентов LCL. Все другие вещи, как IO, Database, FCL и RTL предоставляются FPC. IDE нужны пути ко всем исходникам.
Пути к исходникам FPC могут быть установлены через: Environment -> Environment Options -> Files -> FPC source directory (Окружение -> Параметры -> Файлы -> Каталог исходного кода FPC).
Как внедрять содержимое небольшого файла в исполняемый файл? Как внедрять ресурсы?
создаст sound.lrs из sound1.wav и sound2.wav.
Потом включите его *после* lrs-файла формы:
В Вашей программе эти ресурсы можно использовать следующим образом:
Что означают различные расширения файлов, используемые Lazarus?
Глава Lazarus Tutorial#The Lazarus files разъясняет назначение некторых расширений. Вот их краткий список:
*.lpi файл с информацией о проекте Lazarus (в формате XML; содержит настройки, относящиеся к конкретному проекту) *.lpr программный файл Lazarus; содержит основной Pascal-код программы *.lfm файл формы Lazarus; содержит информацию обо всех объектах, размещённых на форме (хранится в специальном текстовом формате; связанные с объектами формы действия хранятся в одноимённом *.pas -файле) *.pas или *.pp модуль с Pascal-кодом (обычно связан с формой в одноимённом *.lfm -файле) *.lrs файл ресурсов Lazarus (это генерируемый файл; не является файлом ресурсом Windows). Этот файл может быть создан с помощью утилиты lazres (в каталоге Lazarus/Tools) путё вызова из командной строки: lazres myfile.lrs myfile.lfm *.ppu скомпилированный модуль *.lpk информационный файл для пакета Lazarus (в формате XML; содержит настройки, относящиеся к конкретному пакету)
Когда я пишу var mytext: text;, чтобы объявить текстовый файл, я получаю ошибку «Unit1.pas(32,15) Error: Error in type definition». Как можно это исправить?
Класс TControl содержит свойство Text. В методе формы используется типText из модуля system. Вы можете использовать тип TextFile, который всего лишь является другим названием типа Text, или можете добавить модуль при объявлении (см. в примере):
Сходный конфликт имен существует и при связывании и закрытии текстового файла. TForm имеет методы assign и Close. Вместо них вы можете использовать AssignFile и CloseFile, или же добавлять имя модуля System (System.Close, System.Assign).
Я получаю ошибку при использовании Printer.BeginDoc
Модуль Printers должен быть добавлен в секцию uses.
Пакет Printer4Lazarus должен быть добавлен в зависимости Вашего проекта в IDE: Project|Project Inspector|Add|New Requirement|Package Name:
Если пакета Printer4Lazarus нет в списке пакетов, то Вам нобходимо установить его. Пакет является частью установки Lazarus и может быть найден по следующему пути: [каталог установки lazarus]componentsprinters
Если Вы используете стандартный путь для установки Lazarus’а, то [каталог установки larazus] находится:
- Windows: c:lazarus
- Linux: /usr/lib/lazarus
Данное решение также применимо, если Вы получаете исключения при использовании Printer.Printers
Почему TForm.ClientWidth/ClientHeight — это то же самое, что и TForm.Width/Height?
TForm.Width/Height не включают границ окна, поскольку не существует способа получить размер этих границ на всех платформах. Без надёжного способа LCL будет перемещать формы по всему экрану или бесконечно изменять их размер.
В конечном итоге, когда появится надёжный способ получения размера и позиции окна вместе с его границами для всех платформ, это будет изменено. Для сохранения совместимости со старыми LCL-формами, будет введён номер версии и использованы некоторые другие дополнительные методы.
Отладка
Как увидеть отладочные сообщения?
В модуле LCLProc в LCL есть две процедуры для вывода отладочных сообщений. Они называются:
- DebugLn: которая работает также, как WriteLn, но принимает только строки.
- DbgOut: которая работает также, как Write, но принимает только строки.
В обычных условиях сообщения выводятся в stdout. Если stdout закрыт (например когда приложение <$AppType Gui>или откомпилировано с ключом -WG под Windows), сообщения не выводятся никуда.
Отладочные сообщение могут также выводится в файл. Код инициализации модуля LCLProc проверяет командую строку Lazarus.exe’s на предмет наличия ключа ‘—debug-log= ‘. Если этот ключ присутствует — весь последующий отладочный вывод направляется в .
Если этого ключа нет, проверяется существование системной переменной окружения xxx_debuglog, где xxx — имя файла программы без расширения. Для Lazarus это будет lazarus_debuglog. Если такая переменная окружения существует, файл указанный в ней будет использован для вывода отладочных сообщений. Пример: если вы сделаете:
то отладочные сообщения будут выводится в c:lazarusdebug.txt.
Так как это реализовано в lclproc, любое приложение использующее lclproc может использовать этот механизм вывода отладочных сообщений.
Отладка Lazarus-а Наиболее полезно для Windows: Если вы хотите выводить сообщения в консоль, добавьте <$APPTYPE console>в lazarus.pp ; После чего перекомпилируйте Lazarus.
Как мне просмотреть значение свойств?
Вам нужно использовать самую последнюю версию FPC из исходников (2.5.1) или релиз 2.4.0. Любая версия позднее указанных, так же подойдёт.
Если Вы скомпилируете приложение, использую ключ -gw (отладочная информация dwarf), Вы сможете просмотреть значения свойств.
Внимание: это возможно, только для тех свойст, которые напрямую связан с членом класса, директива «read» указывает на переменную, а не метод.
Если свойство возвращает значение через функцию, то достаточно опасно проверять её значение. Риск заключается в том, что для проверки её значения требуется вызвать процедуру или функцию, что может привести к изменению других значений и/или данных. А это значит, что данные изменились в режиме отладки, и дальнейшее исполнение программы, будет отличаться от работы без отладчика.
Проверка свойства по результату функции (как описана выше), ещё не реализована.
Почему отладчик не показывает некоторые переменные или структуры (выдавая ошибки «no such symbol»/»incomplete type»)
Для решения проблем с: — свойствами
— динамическими массивами
— переменными во вложенных процедурах
— «no such symbol in context»
— «incomplete type»
Как я могу проводить отладку компонентов и пакетов FCL с помощью Lazarus
Компоненты и классы FCL скомпилированны по умолчанию без отладночной информации. Как результат — gdb не моэет получить доступ к методам и свойствам этих объектов. Для пересборки компонентов FCL необходимо включить ключ компилятора «-gl» для генерации отладочной информации.
Этот пример предпологает, что у вас Linux дистрибутив с установленным FPC в папке /usr/local/ и вам необходимо включить отладочную информацию для пакета fcl-db. По аналогии с пакетом fcl-db, используемом в данном примере, вы можете применить эти команды для ЛЮБЫХ пакетов, содержащихся в дистрибутиве.
В начале, вам необходимо найти путь к установленному FPC проверив ваш конфигурационный файл FPC. Это файл (fpc.cfg) расположен /etc/fpc.cfg. Просмотрите содержимое fpc.cfg определить папку установки. Обратите внимание на строки, начинающиеся с -Fu в fpc.cfg:
При создании скрипта для установки модулей в папку INSTALL_PATH/lib/fpc/$fpcversion/units/$fpctarget/, вы должны быть уверены, что /usr/local это путь установки FPC, и он должен быть присвоем INSTALL_PREFIX, в противном случае Make-скрипт установи модули в неправильную папку или вообще завершится с ошибкой.
Step 1: Открыть терминал и набрать терминале
Step 2: cd /user/local/share/src/fpc-2.3.1/fpc/fcl-db/
Step 3: sudo make clean all install INSTALL_PREFIX=/usr/local OPT=-gl
Замечание: Параметр INSTALL_PREFIX правильно указан для установки модулей. В примере ниже /usr/local — это путь по умолчанию для fpc в Linux, но он может сильно отличаться в других операционных системах
В конце, после пересборки любого FCL пакета, вам возможно необходимо будет пересобрать LCL.
Contributing / Making Changes to Lazarus
Я создал патч для пристыковки окна сообщений IDE к окну «Редактор исходного кода» (снизу)
Такие патчи не будут приняты, так как они реализуют лишь малую часть требуемой функциональности стыковки (docking). Цель состоит в создании полноценного менеджера стыковки и его использовании. Полноценный менеджер стыковки(dock manager) может соединять все окна и позволяет пользователю определять, как их стыковать (должно ли окно сообщений быть над или под окном кода . или вообще быть отделено от него). К примеру:
Менеджер стыковки может сохранить это расположение и восстановить его при следующем старте. Предпочтительно, если менеджер может работать не только с окнами, но и со страницами редактора кода. Менеджер стыковки не требует использования drag&drop. Все патчи реализующие стыковку без менеджера стыковки усложняют реализацию настоящего менеджера стыковки и потому будут отклонены.
В качестве временного решения можно использовать это расширение IDE: Manual Docker
Я исправил/улучшил Lazarus. Как добавить мои изменения в официальный код Lazarus?
Создайте патч и пришлите его разработчикам. Более подробную информацию смотрите здесь Creating A Patch/ru.
How can I become a Lazarus developer and access management in the SVN and bug-tracker?
First of all: you must learn about Lazarus, to prove your knowledge and skill. Start by reading the wiki articles, read the Lazarus source code, giving a look at the Lazarus Bug-Tracker, fix some bugs, and if you think you are ready, contact the developers on the mailing list.
Где объявлены .
Константы виртуальных клавиш
Константы виртуальных клавиш (VK_UP, VK_ESCAPE и т.д ) объявлены в LCLType. Добавьте LCLtype в uses секцию.
Использование среды разработки
Как я могу использовать «завершение идентификаторов»?
Чтобы вызвать окно завершения идентификатора нажмите [ctrl][space] (по умолчанию для Windows и Linux).
Вы можете настроить автоматическое появление этого окошка в пункте меню Окружение->Редактор->Code Tools->Автоматические функции
Linux
Как выполнить отладку в Linux без IDE?
Прежде всего потребуется отладчик. gdb это стандартный отладчик под линукс, имеющий несколько GUI-интерфейсов. Наиболее распространённый интерфейс — ddd — является частью большинства популярных дистрибутивов. Для компиляции lazarus/lcl с информацией для отладчика вам нужно использовать следующие команды для запуска отладочной сессии:
Однако, следует отметить что ddd не такой удобный как например отладчик Lazarus. Особенно если он используется для просмотра значений имеющихся переменных, учитывая что ddd/gdb регистрозависимы, а Pascal — регистронезависим. Поэтому, чтобы видеть значения переменных, необходимо набирать их имена в верхнем регистре. Для получения более подробной информации обратитесь к fpc-manuals.
I can debug now but ddd does not find my sources or complains that they contain no code. Whats that?
This is a path-related problem with either gdb or ddd. You can avoid this by
- Use the «Change directory» command from the ddd menu and choose the directory where the sources are located. The drawback of this method is that you now can’t use the source of the program you started with (e.g. lazarus). Thus it may be neccessary to change the directory multiple times.
- In ddd goto [Edit] [gdb-settings] and set the search-path
- Create a $(HOME)/.gdbinit file like:
«> I receive an error during the linking that states /usr/bin/ld can’t find -l
which provides , but you also need the development package (rpm, deb), normally called
-dev, which contains the .a (static lib) and/or the .so (dynamic lib). Some distributions have commands to find which package contains a file: Mandriva will list all packages containing the file named lib .so, you’ll have to install those ending in -devel Debian install the apt-file utility (apt-get install apt-file) then will list all packages containing the file named lib .so, you’ll have to install those ending in -dev
Source Based Distributions and Manual Compilation (LFS) Make sure that there is a lib .a in the path, and that it contains the right version. To let the linker find the dynamic library, create a symlink called lib .so to lib -x,y.so if necessary (and/or for static lib; lib .a to lib -x,y.a). FreeBSD As source based distro’s, and also make sure you have -Fl/usr/local/lib in your fpc.cfg and/or Lazarus library path. Keep in mind that GTK1.2 has «gtk12» as package name under FreeBSD. (same for glib) NOTE: This has changed as of late. Newest ports have gtk-12 and glib-12 as well. You might stumble on this problem, since FPC requires the «-less» ones, you will need to symlink them like this: NetBSD As source based distro’s, and also make sure you have -Fl/usr/pkg/lib in your fpc.cfg and/or Lazarus library path
How can I convert a kylix 2 project into a lazarus project?
Nearly the same way as converting a Kylix project into a Delphi/VCL project.
The LCL (Lazarus Component Library) tries to be compatible to Delphi’s VCL. Kylix’s CLX tries to be QT compatible. Here are some general hints:
- Rename all used CLX Q-units like QForms, QControls, QGraphics, . into their VCL counterparts: Forms, Controls, Graphics, .
- Add LResources to the uses section of every form source
- Rename or copy all .xfm files to .lfm files.
- Rename or copy .dpr file to .lpr file.
- Add «Interfaces» to the uses section in the .lpr file.
- Remove <$R *.res>directive
- Remove <$R *.xfm>directive
- Add <$mode objfpc><$H+>or <$mode delphi><$H+>directive to .pas and .lpr files
- Add an initialization section to the end of each form source and add an include directive for the .lrs file (lazarus resource file):
The .lrs files can be created via the lazres tool in: (lazarusdir)/tools/lazres. For example: ./lazres unit1.lrs unit1.lfm
- Fix the differences. The LCL does not yet support every property of the VCL and the CLX is not fully VCL compatible.
- To make it more platform independant, reduce unit libc (which is deprecated) references and substitute with native FPC units like baseunix/unix as much as possible. This will be necessary to support other targets than linux/x86 (including OS X, FreeBSD and Linux/x86_64)
When compiling lazarus the compiler can not find a unit. e.g.: gtkint.pp(17,16) Fatal: Can’t find unit GLIB
1. Check a clean rebuild: do a ‘make clean all’
2. Check if the compiler has the correct version (2.0.4 or higher)
3. Check if the compiler is using the right config file. The normal installation creates /etc/fpc.cfg. But fpc also searches for
/.fpc.cfg, /etc/ppc386.cfg and it uses only the first it finds.
Hint: You can see which config file is used with ‘ppc386 -vt bogus’ Remove any ppc386.cfg as it is really obsolete.
4. Check if the config file (/etc/fpc.cfg) contains the right paths to your fpc libs. There must be three lines like this:
The first part of these paths (/usr/lib/fpc) depends on your system. On some systems this can be for example /usr/local/lib/fpc/. . Hint: You can see your searchpaths with ‘ppc386 -vt bogus’
5. Check that the config file (/etc/fpc.cfg) does not contain search paths to the lcl source files (.pp, .pas):
If you want to add the lcl for all your fpc projects, make sure that the two paths look like the following and are placed after the above fpc lib paths:
6. Check if the missing unit (glib.ppu) exists in your fpc lib directory. For example the gtk.ppu can be found in /usr/lib/fpc/$fpcversion/units/i386-linux/gtk/. If it does not exists, the fpc lib is corrupt and should be reinstalled.
7. Check if the sources are in a NFS mounted directory. In some cases the NFS updates created files incorrectly. Please, try to move the sources into a non NFS directory and compile there.
8. If you are still not succeeded try to use samplecfg script as follows:
# sudo ./samplecfg /usr/lib/fpc/$version /etc
Note! Do not put — / — after etc because if you do that the system will create a file — /etc/fpc.cfg/fpc.cfg. In fact we want that samplecfg make a file — /etc/fpc.cfg — not the folder /etc/fpc.cfg.
I have installed the binary version, but when compiling a simple project, lazarus gives: Fatal: Can’t find unit CONTROLS
Probably you are using a newer fpc package, than that used for building the lazarus binaries. The best solution is to download the sources and compile lazarus manually. You can download the source snapshot or get the source via svn:
Make sure that lazarus get the new source directory: Environment->General Options->Files->Lazarus Directory Top
Lazarus компилируется, но компоновка прерывается с ошибкой: libgdk-pixbuf not found
Для решения проблемы нужно установить библиотеку gdk-pixbuf library для gtk1.x:
Библиотека gdk-pixbuf может быть найдена:
Debian пакет: libgdk-pixbuf-dev
Если вы собираете Lazarus с GTK 2.0 вы можете получить ошибку «libgdk-pixbuf2.0 not found» . Для решения проблемы просто установите пакет libgtk2.0-dev, используя команду apt следующим образом (используйте sudo при необходимости):
Я использую SuSE, при компиляции получаю ошибку: «/usr/bin/ld: cannot find -lgtk Error: Error while linking»
Ранние версии SuSE (до SuSE 11) устанавливали gtk библиотеки devel в директорию /opt/gnome/lib (или /opt/gnome/lib64 для 64-й версии), что не является общепринятым путём для библиотек.
Для решения проблемы, вы можете добавить этот путь библиотеки в конфигурационный файл FPC (/etc/fpc.cfg), следующей строкой:
Лазарус после установки компонента падает с ошибкой runtime error 211
После установки компонента Лазарус падает со следующей ошибкой:
Как это исправить?
Установленный компонент использует потоки. FPC не включает поддержку многопоточности автоматически на *nix системах, по-этому её необходимо включать вручную. Её включение происходит использованием модуля cthreads. Любое приложение, использующее такой компонент должна использовать этот модуль, причём он должен быть первым подключаемым модулем в программе. Лазарус так же не является исключением.
Подключить модуль cthreads можно двумя способами:
1) Откройте пакет. В редакторе пакетов нажмите на Параметры (Options). Во вкладке Использование (Usage) добавьте настройкуПользовательские (custom) и запишите -dUseCThreads. Пересоберите Лазарус. В этом случае модуль cthreads подключиться автоматически для unix систем.
2) Чтобы не изменять пакет, можно добавить директиву компиляци при сборке самого Лазаруса. Откройте меню Сервис(Tools)->Параметры сборки Lazarus(Configure «build Lazarus)». В диалоге Параметры «Cборки Lazarus»(«build Lazarus») в поле «Параметры:»(«Options:») впишите -Facthreads и нажмите кнопку «OK». После этого добавьте пакет и пересоберите среду.
Совет: Предыдущая копия Лазаруса (исполнительный файл, который при запуске на выдавал ошибку), скорее всего, находится в той же папке что и текущая версия, но с расширением .old.
Когда я запускаю программу, использующую потоки (threads), я получаю сообщение об ошибке «runtime error 232»
Полное сообщение выглядит так:
Решение: Добавьте модуль cthreads в секцию uses главного модуля вашей программы (обычно это .lpr-файл).
У меня Ubuntu Breezy/Mandriva KDE3 и шрифты в Lazarus IDE выглядят слишком большими
Попробуйте следующее: Создайте файл с именем «.gtkrc.mine» в домашней директории (если он не существует) и внесите в него данный текст:
Если это не сработает, попробуйте создать ссылку .gtkrc на .gtkrc.mine. Данный способ был опробован в Xubuntu 7.10 и Mandriva 2009.0 KDE3
Примечание: Если Lazarus был скомпилирован с использованием библиотеки Gtk1.2, то настройка шрифтов в Gtk2 не будет влиять на отображение текста в нём.
Как подключать и использовать сторонние файлы ресурсов (*.rc) в GTK приложении?
Вариант 1. Переименуйте файл ресурсов (rc) мой_ресурс.rc в имя_программы.gtkrc и поместите в папку с исполняемым файлом программы.
Вариант 2. Подключите модуль GtkInt в секцию uses исходного кода проекта (*.lpr), и допишите код
перед вызовом Application.Initialize.
Вариант 3. Используя модуль gtk2 вызовите метод gtk_rc_parse(‘имя_файла_ресурса’) а также gtk_rc_reparse_all.
I have Ubuntu and I cannot compile for Gtk2 due to missing libraries
Ubuntu has a problem with not creating all the symbolic links that you’ll need even when the libraries are installed. Make sure that all missing libraries when trying to link for Gtk2 have their appropriate links. For instance, you might need to do:
Make sure that the [whatever].so symbolic links are created and point to the actual libraries.
How can I compile a program for Gtk2?
At the moment, the Gtk2 compiled IDE is a little unstable, but you can compile software for Gtk2 using the Gtk1 IDE.
To start with recompile LCL for Gtk2. Go to the menu «Tools»->»Configure Build Lazarus» and set LCL to clean+build and everything else to none.
Now click Ok and go to the menu «Tools»->»Build Lazarus»
Now you can compile your software with Gtk2 going on the Compiler options and changing the widgetset to Gtk2.
I get this message: «[WARNING] ** Multibyte character encodings (like UTF8) are not supported at the moment.»
Since revision 10535 (0.9.21) this message doesn’t exist anymore. Previously it was used to warn that a UTF-8 encoding was used. The internal keyhandling routines for the gtk1 widgetset couldn’t handle such encoding for keypresses, with the result that keypresses with for instance accented chars were not or wrong detected.
(original text for older versions of lazarus)
This warning message indicates that your locale enconding is set to utf-8. If you are using Gtk 1 this can be a serious problem and prevent the correct working of Lazarus or software created with Lazarus.
To work around this, just change your locale to a non utf-8 before executing the program on the command line, like this:
Substitute pt_BR with the locale for your country. You can create a script to automate this.
Windows
&_was_unexpected_at_this_time.»> When I cycle the compiler, I get:The name specified is not recognized as an internal or external command, operable program or batch file.>& was unexpected at this time.
In the compiler directory there is an OS2 scriptfile named make.cmd. Different versions of Windows also see this as a script file, so remove it since what is needed for OS2 becomes a hindrance on Windows.
When I cycle the compiler, I get: make[3]: ./ppc1.exe: Command not found
I don’t know why but somehow make has lost its path. Try to cycle with a basedir set like: make cycle BASEDIR=your_fpc_source_dir_herecompiler
When I try to make Lazarus I get:
make.exe: * * * interfaces: No such file or directory (ENOENT). Stop.make.exe: * * * [interfaces_all] Error 2
You need to upgrade your make.
makefile:27: *** You need the GNU utils package to use this Makefile. Stop.
Make sure you didn’t install FPC in a path with spaces in the name. The Makefile doesn’t support it.
How can I give my program an XP look like lazarus has?
Project -> Project Options -> Check ‘Use manifest to enables themes’.
Когда я запускаю Windows программу, созданную в Lazarus-е, открывается консольное (DOS) окно
Укажите параметр -WG (Windows графическое приложение) в командной строке компилятора или установите флажок
Mac OS X
Why does compiling a project fail with ‘unknown section attribute: no_dead_strip’?
Dead code stripping is not supported by the assembler and linker before Xcode 1.5 (available for Mac OS X 10.3.9). Disable the compiler options
- Code > Unit style > Smart linkable (-CX)
- and Linking > Link Style > Link smart (-XX)
Лицензирование
Могу ли я создавать коммерческие приложения, используя Lazarus?
Да, библиотека LCL разрабатывается под лицензией LGPL, что позволяет использовать её без открытия кода вашего приложения. Однако, модификации и расширения LCL должны распространяться с исходным кодом. Сам Lazarus, как IDE, использует лицензию GPL. Отметим, что LCL — это код, содержащийся в файлах из каталога «lcl», прочий код не подпадает под действие указанной лицензии.
Могу ли использовать в коммерческих приложениях дополнительные компоненты Lazarus?
В составе Lazarus есть дополнительные компоненты, разработанные участниками сообщества. Некоторые из этих компонентов распространяются под лицензиями, отличными от лицензии самого Lazarus. Если вы используете такие компоненты, вы должны уточнить их лицензию. Обычно необходимое пояснение приводится в исходном коде файлов соответствующего пакета. Большинство дополнительных компонентов от сторонних разработчиков можно найти в подкаталоге «components» основного каталога Lazarus.
Как я могу узнать, что компонент является частью LCL?
Все модули LCL размещаются в подкаталоге «lcl». Также доступен список модулей, входящих в LCL. Если в вашем коде вызываются модули, которых нет в этом списке, вероятно, вы используете компонент, не являющийся частью LCL.
Могу ли я создавать коммерческие плагины для Lazarus?
Да, the IDEIntf part of the IDE is licensed under the LGPL with the same exception, so that shared data structures in this part will not force you to license your plug-in or design-time package under the GPL. You are free to choose a plug-in of any license; we don’t want to limit your choice. Therefore non-GPL compatible plug-ins are allowed. Note that it’s not allowed to distribute a precompiled Lazarus with these non-GPL-compatible plugins included statically; however, we do not see this as a severe limitation, since recompiling Lazarus is easy.
Источник
СООБЩЕНИЯ КОМПИЛЯТОРА ОБ ОШИБКАХ
§ Если в меню Options?Linker?Link Buffer, установлен параметр Memory, переключите его в значение Disk.
§ Возможно программа слишком велика, чтобы компилироваться в таком объеме памяти. Следует разбить ее на два или более модуля.
§ несоответствующее количество begin и end (не забудьте, что оператор case также заканчивается словом end);
§ включаемый файл заканчивается в середине раздела операторов. Каждый раздел операторов должен целиком помещаться в одном файле;
§ незаконченный комментарий.
§ несовместимые типы переменной и выражения в операторе присваивания;
§ несовместимые типы фактического и формального параметров в обращении к процедуре или функции;
§ тип выражения, несовместимый с типом индекса при индексировании массива;
§ несовместимые типы операндов в выражении.
§ Идентификатору функции можно присваивать значения только внутри раздела операторов данной функции.
§ Объектный файл .obj определяет идентификаторы PUBLIC, которые не находятся в сегменте CODE.
§ Идентификатор обозначает абсолютную переменную.
§ Идентификатор обозначает процедуру или функцию типа inline.
§ Файл .com содержит ссылки с размерами в байтах на перемещаемые идентификаторы. Такая ошибка происходит в случае, если вы используете операторы HIGH и DOWN с перемещаемыми идентификаторами или если вы ссылаетесь в директивах DB на перемещаемые идентификаторы.
§ Операнд ссылается на перемещаемый идентификатор, который не был определен в сегменте CODE или в сегменте DATA.
§ Операнд ссылается на процедуру EXTRN или функцию EXTRN со смещением, например CALL SortProc+8.
§ Процедуры или функции были описаны с помощью описания forward, но их определение не найдено.
§ Вы пытаетесь осуществить приведение типа выражения, когда разрешается только ссылка на переменную, процедуру или функцию.
§ Вы пытаетесь присвоить константу вне диапазона переменной.
§ Вы пытаетесь передать константу вне диапазона в качестве параметра процедуре или функции.
Размер локальных переменных, описанных в программе или функции, не может превышать 64 Кбайт.
Сообщение компилятора об ошибках
Если
ошибка возникает при компиляции внутри
TP,
Турбо Паскаль активизирует окно
редактирования и помещает курсор на
место ошибки в исходной программе.
Если
ошибка возникает при использовании
командно-строчного компилятора, Турбо
Паскаль выдает сообщение об ошибке,
выводит на экран исходную строку
программы с ошибкой и ее номер; символ
^ в выдаваемой исходной строке указывает
местоположение ошибки. Ошибки
подразделяются на:
-
ошибки
при компилировании программы; -
ошибки
на уровне DOS; -
ошибки
ввода-вывода.
Ошибки при компилировании
1
Out of memory (Выход за пределы памяти)
Данная
ошибка появляется, если компилятор
израсходовал всю доступную ему память.
Возможно, ваша программа или программный
модуль слишком велики, чтобы компилировать
их в таком объеме памяти. В этом случае
программу или программный модуль
необходимо разбить на два или более
программных модуля.
2
Identifier expected (Ожидается идентификатор)
В этом месте должен
находиться идентификатор.
3
Unknown Identifier (Неизвестный идентификатор)
Этот идентификатор
не был описан.
4
Duplicate Identifier (Повторение идентификатора)
5
Syntax error (Синтаксическая ошибка)
В исходном тексте
найден недопустимый символ. Возможно,
не заключена в кавычки строковая
константа.
6
Error in real constant (Ошибка в константе
вещественного типа)
Ошибка в синтаксисе
константы вещественного типа.
7
Error In Integer constant (Ошибка
в
константе
целого
типа)
Ошибка
в синтаксисе константы целого типа
(Учтите, что после чисел, превышающих
диапазон представления целых чисел,
должны ставиться точка и нуль, например
12345678912.0.).
8
String constant exceeds line (Строковая константа
превышает размеры строки)
Вероятно, после
строковой константы отсутствует символ
кавычка.
9
Too many nested files (Слишком много вложенных
файлов)
Компилятор допускает
не более 15 вложенных исходных файлов и
не более 4 включаемых файлов.
10
Unexpected end of file (Неожиданный
конец
файла)
Данное сообщение
может появиться по одной из следующих
причин:
В Вашей программе,
вероятнее всего, неодинаковое количество
операторов BEGIN и END.
Включаемый
файл заканчивается в середине раздела
операторов (Каждый раздел операторов
должен целиком помещаться в одном
файле).
В Вашем файле не
закрыты скобки комментария.
11
Line too long (Строка слишком длинная)
Максимальная длина
строки не может превышать 127 символов.
12
Type Identifier expected (Ожидается идентификатор
типа)
В определенном
месте не указан тип идентификатора.
13
Too many open files (Слишком много открытых
файлов)
В
файле CONFIG.SYS не установлен параметр
FILES = N, где N — представляет собой целое
число без знака. Установите в файле
CONFIG.SYS значение параметра FILES = N >= 30.
14
Invalid file name (Недопустимое имя файла)
Имя файла неверно
или указан несуществующий путь.
15
File not found (Файл
не
найден)
Файл
не найден ни в одном из каталогов,
предназначенных для хранения файлов
данного типа.
16
Disk full (Диск заполнен)
Удалите
с диска ненужные Вам файлы (например
файлы с расширением .ВАК или .ТМР) или
попробуйте сохранить текст программы
на другом диске, который имеет достаточный
объем свободной памяти.
17
Invalid compiler directive (Недопустимая директива
компилятора)
Неверная
буква в директиве компилятора, один из
параметров директивы компилятора
неверный или Вы пользуетесь глобальной
директивой компилятора, когда компиляция
тела программы уже началась.
18
Too many files (Слишком много файлов)
В
компиляции программы или программного
модуля участвует слишком много файлов.
Попытайтесь не использовать так много
файлов, например, объединяя включаемые
файлы.
19
Undefined type la pointer definition (Неопределенный
тип в описании указателя)
Вы
пытаетесь объявить типизированный
указатель, связанный с ранее необъявленным
типом данных.
20
Variable Identifier expected (Ожидается идентификатор
переменной)
В указанном курсором
месте ожидается идентификатор переменной.
21
Error in type (Ошибка в определения типа)
Определение типа
не может начинаться с этого символа.
22
Structure too large (Слишком длинная структура)
Максимально
допустимый размер любого структурированного
типа — 65520 байтов.
23
Set base type of range (Количество элементов в
множестве превышает допустимое значение)
Базовый
тип множества должен представлять собой
интервальный или перечисляемый тип
данных с не более чем 256 значениями.
24
File components may not be files or objects (Компоненты
файла
не
могут
быть
файлами
или
объектами)
Тип
компонентов файла не может быть объектным
типом, файловым типом или любым другим
структурированным типом, содержащим
компоненты типа файла или объекта.
25Invalid
string length (Неверная длина строки)
Длина описываемой
строки должна находиться в пределах
от 1 до 255.
26
Type mismatch (Несоответствие типов)
Причины, вызвавшие
появление данного сообщения, могут быть
следующими:
Несовместимы типы
переменной и выражения в операторе
присваивания.
Несовместимые
типы фактического и формального
параметров в обращении к процедуре или
функции.
Тип выражения
несовместимый с типом индекса при
индексировании массива.
Несовместимые
типы операндов в выражении.
27
Invalid subrange base type (Неправильный базовый
тип для интервала)
28Lower
bound greater than upper bound (Нижний
граница
превышает
верхнюю)
При
описании интервального типа данных Вы
объявили нижнюю границу диапазона
больше верхней.
29
Ordinal type expected (Ожидается перечисляемый
тип)
Вещественные,
строковые, структурные и ссылочные типы
в данном случае не допускаются.
30
Integer constant expected (Ожидается константа
целого типа)
31
Constant expected (Ожидается константа)
32
Integer or real constant expected (Ожидается константа
целого или вещественного типа)
33Pointer
type Identifier expected (Ожидается идентификатор
типа указатель)
Указанный курсором
идентификатор не является указателем.
34
Invalid function result type (Недопустимый тип
результата функция)
Правильными типами
результата функции являются все простые,
строковые и ссылочные типы.
35
Label Identifier expected (Ожидается идентификатор
метки)
Обнаружена ссылка
на метку, не описанную в разделе LABEL.
36
BEGIN expected (Ожидается оператор BEGIN)
37
END expected (Ожидается оператор END)
38
Integer expression expected (Ожидается выражение
целого типа)
39
Ordinal expression expected (Ожидается выражение
перечисляемого типа)
40
Boolean expression expected (Ожидается выражение
логического типа)
41
Operand types do not match operator (Несоответствие
типов
операнду)
Данная
операция не может применяться к операндам
этого типа. Такое сообщение будет
вызвано, например, при попытке выполнить
следующую операцию:’ 9′ DIV ‘G’ .
42
Error in expression (Ошибка
в
выражении)
Данный
идентификатор не может участвовать в
выражении указанным образом.
Возможно, вы забыли
указать операцию между двумя операндами.
43
Illegal assignment (Запрещенное присваивание)
Это сообщение
может появиться по следующим причинам:
-
файлам
и нетипизированным переменным нельзя
присваивать значения; -
идентификатору
функции можно присваивать значения
только внутри раздела операторов данной
функции.
44
Field Identifier expected (Ожидается идентификатор
поля)
Данный идентификатор
не соответствует полю предшествующей
переменной типа RECORD или OBJECT.
45
Object file too large (Объектный файл слишком
большой)
Турбо Паскаль не
может компоновать OBJ-файлы размером
больше чем 64 Кбайта.
46
Undefined external (Не определена внешняя
процедура)
Внешняя процедура
или функция не имеет соответствующего
определения PUBLIC в объектном файле.
Убедитесь, что вы указали все объектные
файлы в директивах {$L <имя ОВJ-файла>),
и проверьте написание идентификаторов
процедуры или функции в файле .ASM.
47
Invalid object file record
(Недопустимая
запись объектного файла)
Файл .OBJ содержит
неверную объектную запись. Убедитесь
в том, что данный файл является
действительно OBJ-файлом.
48
Code segment too large (Сегмент кода слишком
большой)
Максимально
допустимый размер кода программы или
программного модуля ранен 65520 байтам.
Разбейте Вашу программу или программный
модуль на несколько частей.
49
Data segment too large (Сегмент данных слишком
большой)
Максимальный
размер сегмента данных программы равен
65520 байтам, включая данные, описываемые
используемыми программными модулями.
Если нужно большее количество глобальных
данных, опишите большие структуры с
помощью указателей и выделяйте для них
память динамически с помощью процедуры
New.
50
DO expected (Ожидается оператор DO)
51
Invalid PUBLIC definition (Недопустимое
определение
PUBLIC)
Появление этого
сообщения возможно но следующим причинам:
-
Данный
идентификатор получил тип PUBLIC с помощью
соответствующей директивы языка
ассемблер, но не соответствует описанию
EXTERNAL в программе или программном модуле. -
Две
или более директивы PUBLIC на языке
ассемблера определяют один и тот же
идентификатор. -
OBJ-файл
определяет идентификатор PUBLIC вне
сегмента CODE.
52
Invalid EXTRN definition (Неправильное определение
EXTRN)
Появление этого
сообщения возможно по следующим причинам:
Из Ассемблера была
осуществлена ссылка с помощью директивы
EXTRN на идентификатор, который не был
описан в тексте Паскаль-программы.
Идентификатор
обозначает абсолютную переменную.
Идентификатор
обозначает процедуру или функцию типа
INLINE.
53
Too many EXTRN definition (Слишком много определений
типа EXTRN)
Турбо
Паскаль не может обрабатывать файлы
.OBJ при более чем 256 определениях EXTRN.
54
OF expected (Ожидается
оператор
OF)
55
INTERFACE expected (Ожидается
оператор
INTERFACE)
56
Invalid relocatable reference (Недопустимая
перемещаемая
ссылка)
Появление этого
сообщения возможно по следующим причинам:
-
OBJ-файл
содержит данные и перемещаемые ссылки
в сегментах, отличных от CODE, например,
при попытке описать инициализированные
переменные в сегменте DATA. -
ORJ-файл
содержит ссылки с размерами в байтах
на перемещаемые символы. Такая ошибка
происходит в случае использования
операторов HIGH и DOWN с перемещаемыми
символами или, если Вы ссылаетесь в
директивах DB на перемещаемые символы. -
Операнд
ссылается на перемещаемый символ,
который не был определен в сегментах
CODE или DATA. -
Операнд
ссылается на процедуру EXTRN или функцию
EXTRN со смещением, например CALL SortProc+8.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Сообщения и коды ошибок
Сообщения об ошибках периода компиляции |
|
Ошибки возникающие во время выполнения программ |
|
Ошибки, обнаруживаемые ДОС | |
Ошибки ввода-вывода | |
Критические ошибки | |
Фатальные ошибки |
Сообщения об ошибках периода компиляции
Среда Турбо Паскаля дает исчерпывающую информацию о характере и месте
обнаруженной компилятором ошибки. При обнаружении ошибки среда автоматически
загружает в окно редактора исходный файл и помещает курсор около того места, где
в исходном тексте обнаружена ошибка. При этом в верхней строке редактора
появляется диагностическое сообщение. После нажатия на любую клавишу (кроме FI)
верхняя строка восстанавливает свой первоначальный вид и среда переходит к
режиму редактирования. Если после появления сообщения об ошибке нажать F1, на
экране появится окно справочной службы с детальной информацией об ошибке и
рекомендациями по ее устранению. Некоторые ошибки в исходном тексте
обнаруживаются не сразу, а в ходе продолжающегося контекстного разбора.
Например, несоответствие типов в операторе присваивания не может быть обнаружено
до тех пор, пока не будет вычислено целиком выражение в правой части этого
оператора. В таких случаях ищите ошибку слева от курсора или в предыдущей строке
текста.
Ниже приводятся сообщения об ошибках в том виде, в каком они появляются в
верхней строке редактора, а также перевод сообщений справочной службы.
На экране после кода ошибки (цифры) нет точки, поэтому ее нет и в
соответствующем месте текста.
1 Out of memory (Выход за границы памяти).
Компилятору не хватает памяти. Имеется ряд возможных решений этой проблемы:
Если ни одна из рекомендаций не помогает, то, возможно, Ваша программа просто
слишком велика, чтобы компилировать ее в таком объеме памяти. В этом случае Вы
должны разбить ее на два или более модулей.
2 Identifier expected (He указан идентификатор).
В этом месте должен находиться идентификатор. Возможно, Вы пытаетесь
использовать в качестве идентификатора зарезервированное слово.
3 Unknown identifier (Неизвестный идентификатор).
Этот идентификатор не был
описан.
4 Duplicate identifier (Двойной идентификатор).
Попытка дважды описать один и
тот же идентификатор.
5 Syntax error (Синтаксическая ошибка).
В исходном тексте найден недопустимый символ. Возможно, Вы забыли заключить в
апострофы строковую константу.
6 Error in real constant (Ошибка в вещественной константе).
Синтаксис
констант вещественного типа описан в гл.4.
7 Error in integer constant (Ошибка в целой константе).
Синтаксис констант целого типа описан в гл.4. Учтите, что после целых
действительных чисел, превышающих диапазон представления целых чисел
(-2147483648..+2147483647), должны ставиться точка и ноль, например,
12345678912.0.
8 String constant exceeds line (Строковая константа превышает допустимые
размеры).
Вероятно, Вы забыли поставить апостроф в конце строковой константы.
9 Too many nested files (Слишком много вложенных файлов).
Компилятор допускает не более пяти уровней вложенности включаемых файлов
(т.е. в исходном файле есть ссылка на включаемый файл, в котором есть ссылка на
еще один включаемый файл и т.д.).
10 Unexpected end of file (He найден конец файла).
Вы могли получить это сообщение об ошибке по одной из следующих причин:
11 Line too long (Слишком длинная строка).
Максимальная длина строки, обрабатываемой компилятором, равна 126 символам
(обратите внимание: редактор среды может обрабатывать строки практически
неограниченной длины).
12 Type identifier expected (Здесь нужен идентификатор типа).
Не указан тип
идентификатора.
13 Too many open files (Слишком много открытых файлов).
Появление этой ошибки означает, что конфигурационный файл CONFIG.SYS
операционной системы не включает параметр FlLES=xx или этот параметр указывает
слишком мало файлов. Увеличьте число файлов до нужного значения, например, до
80.
14 Invalid file name (Неверное имя файла).
Имя файла неверно или указан
несуществующий путь.
15 File not found (Файл не найден).
Файл не был найден в просмотренных
каталогах.
16 Disk full (Диск заполнен).
Удалите некоторые файлы или воспользуйтесь
новым диском.
17 Invalid compiler directive (Неправильная директива компилятора).
Неверная
буква в директиве компилятора, один из параметров директивы компилятора
неверный, или Вы пользуетесь глобальной директивой компилятора, когда компиляция
тела программы уже началась.
18 Too many files (Слишком много файлов).
В компиляции программы или программного модуля участвуют слишком много
файлов. Попытайтесь не использовать так много файлов, например, объединяя
включаемые файлы или делая короче имена файлов.
19 Undefined type in pointer definition (Неопределенный тип в объявлении
указателя).
Попытка объявить типизированный указатель, связанный с ранее не объявленным
типом данных.
20 Variable identifier expected (Отсутствует идентификатор переменной).
На
этом месте должен быть идентификатор переменной.
21 Error in type (Ошибка в объявлении типа).
Объявление типа не может
начинаться с этого символа.
22 Structure too large (Слишком большая структура).
Максимально допустимый
размер любого структурного типа составляет 65520 байт.
23 Set base type of range (Базовый тип множества нарушает границы).
Базовый
тип множества должен представлять собой тип-диапазон с границами в пределах от 0
до 255 или перечисляемый тип с не более чем 256 значениями.
24 File components may not be files (Компонентами файла не могут быть файлы)
.
Конструкции типа file of file (файл файлов) или file of object (файл
объектов) не допускаются. Нельзя объявлять любые структурные типы, которые
используют в качестве компонентов объекты или файлы.
25 Invalid string length (Неверная длина строки).
Объявляемая длина строки
должна находиться в диапазоне от 1 до 255.
26 Type mismatch (Несоответствие типов).
Это сообщение может быть вызвано следующими причинами:
27 Invalid subrange base type(Неправильный базовый тип для типа-диапазона).
Допустимыми базовыми типами являются все порядковые типы.
28 Lower bound greater than upper bound (Нижняя граница больше верхней).
Описание типа-диапазона содержит неправильные границы.
29 Ordinal type expected (Нужен порядковый тип) .
Вещественные, строковые, структурные, процедурные типы и указатели в данном
месте программы не допускаются.
30 Integer constant expected (Нужна целая константа).
31 Constant expected (Нужна константа).
32 Integer or real constant expected (Нужна целая или вещественная
константа)
.
33 Tуре identifier expected (Нужен идентификатор типа)
34 Invalid function result type (Неправильный тип результата функции)
Правильными типами результата функции являются все простые типы, строковые типы
и указатели.
35 Label identifier expected (Нужен идентификатор метки).
Метка не обозначена с помощью идентификатора, как это требуется из контекста
программы.
36 BEGIN expected (Нужен BEGIN).
37 END expected (Нужен END).
38 Integer expression expected (Нужно выражение типа
INTEGER).
39 Ordinal expression expected (Нужно выражение перечисляемого типа).
40 Boolean expression expected (Нужно выражение типа
BOOLEAN).
41 Operand types do not match operator (Типы операндов не соответствуют
операции).
Данная операция не может быть применена к указанным операндам, например, ‘ А’
div ‘ 2 ‘ .
42 Error in expression (Ошибка в выражении).
Данный символ не может участвовать в выражении указанным образом. Возможно,
Вы забыли указать операцию между двумя операндами.
43 Illegal assignment (Неверное присваивание).
Файлам и нетипизированным переменным нельзя присваивать значения.
Идентификатору функции можно присвоить значение только внутри раздела операторов
данной функции.
44 Field identifier expected (Нужен идентификатор поля).
Попытка использовать запись целиком в том месте, где требуется ссылка на
какое-либо поле записи.
45 Object file too large (Объектный файл слишком большой).
Турбо Паскаль не
может компоновать файлы .OBJ больше 64 Кбайт.
46 Undefined external (Неопределенная внешняя процедура).
Внешняя процедура или функция не имеет соответствующего определения PUBLIC в
объектном файле. Убедитесь, что Вы указали все объектные файлы в директивах {$L
<имя .OBJ-файлa>} и проверьте написание идентификаторов процедуры или
функции в файле . ASM.
47 Invalid object file record (Неправильная запись объектного файла).
Файл
.OBJ содержит неверную объектную запись. Убедитесь, что данный файл является
действительно файлом .OBJ.
48 Code segment too large (Сегмент кода слишком большой).
Максимальный размер кода программы или программного модуля равняется 65520
байтам. Разбейте Вашу программу или модуль на два или более модулей.
49 Data segment too large (Сегмент данных слишком велик).
Максимальный размер сегмента данных программы равен 65520 байтам, включая
данные, используемые программными модулями. Если Вам нужно большее количество
глобальных данных, опишите большие структуры с помощью указателей и выделяйте
для них память динамически с помощью процедуры
NEW.
50 DO expected (Нужен оператор
DO).
51 Invalid PUBLIC definition (Неверное PUBLIC-определение).
Возможные причины
сообщения:
52 Invalid EXTRN definition (Неправильное EXTRN-определение).
Возможные
причины сообщения:
53 Too many EXTRN definition (Слишком много EXTRN-определений).
Турбо Паскаль
не может обрабатывать файлы .OBJпри более чем 256 определениях
EXTRN.
54 OF expected (Требуется OF).
55 INTERFACE expected (Требуется интерфейсная секция).
56 Invalid relocatable reference (Неправильная перемещаемая ссылка).
Возможные причины сообщения:
57 THEN expected (Требуется THEN).
58 TO or DOWNTO expected (Требуется ТО или
DOWNTO).
59 Undefined forward (Неопределенное опережающее описание).
Возможные причины
сообщения:
60 Too many procedures (Слишком иного процедур).
Турбо Паскаль допускает не более 512 процедур или функций в одном модуле.
Если Вы компилируете программу, то поместите некоторые процедуры или функции в
модули. Если Вы компилируете модуль, то разбейте его на два или несколько
модулей.
61 Invalid typecast (Неверное преобразование типа).
Возможные причины
сообщения:
62 Division by zero (Деление на ноль).
Предшествующая операция пытается
выполнить деление на ноль.
63 Invalid file type (Неверный файловый тип).
Данный файловый тип не обслуживается процедурой обработки файлов. Например,
процедура READLN используется для типизированного файла или процедура SEEK — для
текстового файла.
64 Cannot Read or Write variables of this type (Нет возможности считать или
записать переменные данного типа).
Нарушены следующие ограничения:
65 Pointer variable expected (Нужно использовать переменную-указатель).
Предыдущая переменная должна быть указателем.
66 String variable expected (‘Нужна строковая переменная) .
Предшествующая
переменная должна иметь строковый тип.
67 String expression expected (Нужно выражение строкового типа).
Предшествущее выражение должно иметь строковый тип.
68 Circular unit reference (Перекрестная ссылка модулей).
Два модуля
ссылаются друг на друга:
Unit A;
Unit В;
Uses В;
Uses А;
…..
…..
69 Unit name mismatch (Несоответствие имен программных модулей).
Имя
программного модуля, найденное в файле .TPU, не соответствует имени, указанному
в предложении USES.
70 Unit version mismatch (Несоответствие версий модулей).
Один или несколько программных модулей, используемых данной программой, были
изменены после их компиляции. Воспользуйтесь опцией COMPILE/MAKE или
COMPILE/BUILD в интегрированной среде или опциями /М или /В в компиляторе ТРС,
что позволит автоматически скомпилировать программные модули, нуждающиеся в
перекомпиляции.
71 Duplicate unit name (Повторное имя программного модуля).
Вы уже указали
этот программный модуль в операторе USES.
72 Unit file format error (Ошибка формата файла модуля).
Файл .TPU не
соответствует стандарту Турбо Паскаля.
73 IMPLEMENTATION expected (Отсутствует исполняемая часть модуля).
74 Constant and case types do not match (Типы констант и тип выражения
оператора CASE не соответствуют друг другу).
Тип константы оператора CASE не совместим с выражением в операторе варианта.
75 Record variable expected (Нужна переменная типа запись) .
Предшествующая
переменная должна иметь тип запись.
76 Constant out of range (Константа нарушает границы).
Возможные причины
сообщения:
77 File variable expected (Нужна файловая переменная).
Предшествующая
переменная должна иметь файловый тип.
78 Pointer expression expected (Нужно выражение типа указатель).
Предшествующее выражение должно иметь тип указателя.
79 Integer or real expression expected (Нужно выражение вещественного или
целого типа).
Предшествующее выражение должно иметь тип REAL или
INTEGER.
80 Label not within current block (Метка не находится внутри текущего блока)
.
Оператор GOTO не может ссылаться на метку, находящуюся вне текущего блока.
81 Label already defined (Метка уже определена).
Данная метка уже помечает
оператор.
82 Undefined label in processing statement part (Неопределенная метка в
предшествующем разделе операторов).
Данная метка была описана, и на нее осуществлялась ссылка в предшествующем
разделе операторов, но она не указана в тексте программы.
83 Invalid @ argument (Неправильный аргумент операции @).
Правильными
аргументами являются идентификаторы переменных, процедур и функций.
84 Unit expected (Нужно кодовое слово
UNIT).
85«;» expected (Нужно указать»;») .
86«:» expected (Нужно указать*:») .
87«,» expected (Нужно указать»,») .
88 «(» expected (Нужно указать «(»).
89«)» expected (Нужно указать»)»).
90 «=» expected (Нужно указать «=») .
91«:=» expected (Нужно указать»:=»).
92 «[» or «(.» expected (Нужно указать «[» или «(.»).
93«]» or «.)» expected (Нужно указать»]» или».)»).
94».» expected (Нужно указать».») ,
95«..» expected (Нужно указать»..») .
96 Too many variables (Слишком много переменных).
Нарушены следующие ограничения:
97 Invalid FOR control variable(Неправильный параметр цикла оператора
FOR).
Параметр цикла оператора FOR должен быть переменной порядкового типа,
определенной в разделе описаний текущей подпрограммы.
98 Integer variable expected (Нужна переменная целого типа).
Предшествующая
переменная должна иметь целый тип.
99 File and procedure types are not allowed here (Здесь не могут
использоваться файлы или процедурные типы).
Типизированная константа не может иметь файловый или процедурный тип.
100 String length mismatch (Несоответствие длины строки).
Длина строковой константы не соответствует количеству элементов символьного
массива.
101 Invalid ordering of fields (Неверный порядок полей).
Поля в константе
типа запись должны записываться в порядке их описания.
102 String constant expected (Нужна константа строкового типа).
103 Integer or real variable expected (Нужна переменная типа INTEGER или
REAL).
Предшествующая переменная должна иметь целый или вещественный тип.
104 Ordinal variable expected (Нужна переменная порядкового типа).
Предшествующая переменная должна иметь порядковый тип.
105 INLINE error (Ошибка в операторе
INLINE).
Оператор «<» не допускается в сочетании с перемещаемыми ссылками на
переменные. Такие ссылки всегда имеют размер в слово.
106 Character expression expected (Предшествующее выражение должно иметь
символьный тип).
107 Too many relocation items (Слишком много перемещаемых Элементов).
Размер таблицы перемещения файла .ЕХЕ превышает 64 Кбайта, что является
верхним пределом в Турбо Паскале. Если Вы обнаружили эту ошибку, то это значит,
что программа просто слишком велика для обработки компоновщиком Турбо Паскаля.
Возможно также, что она слишком велика для выполнения в MS-DOS. В таком случае
нужно выделить в программе основной раздел, который выполнял бы обращение к двум
или более вспомогательным разделам с помощью процедуры ЕХЕС из модуля DOS (см.
гл.11).
108 Overflow in arithmetic operator (Переполнение при выполнении
арифметического оператора).
Результат предыдущей арифметической операции не лежит в диапазоне -2 146 483
648…+2 147 483 647. Исправьте операцию или используйте вещественные типы
вместо целочисленных.
109 No enclosing FOR, WHILE or REPEAT statment (Нет операторов, заканчивающих
операторы FOR, WHILE или REPEAT) .
Процедуры BREAK и CONTINUE не могут вызываться вне тела оператора цикла.
110 Debug information table overflow (Переполнение информационной таблицы
отладки).
Возможно, программа содержит более 65536 имен или 65536 строк. Отключите
генерацию таблиц отладки директивой компилятора {$D-} или исправьте один или
более модулей.
111
Ошибка с этим кодом не описана в версии 7.0 системы Турбо Паскаль.
112 CASE constant out of range(Константа CASE нарушает допустимые границы).
Целочисленные константы оператора CASE должны находиться в диапазоне от
-32768 до 32767.
113 Error in statement (Ошибка в операторе).
Данный символ не может быть
первым символом в операторе.
114 Cannot call an interrupt procedure (Невозможно вызвать процедуру
прерывания) .
Вы не можете непосредственно вызвать процедуру обработки прерывания.
115
Ошибка с этим кодом не описана в версии 7.0 системы Турбо Паскаль.
116 Must be in 8087 mode to compile this (Для компиляции необходим режим
8087) .
Данная программа может быть скомпилирована только в режиме {$N+}. В состоянии
{SN-} операции с типами SINGLE, DOUBLE, EXTENDED и СОМР не допускаются.
117 Target address not found (Указанный адрес не найден).
Команда COMPILE/FIND ERROR в среде Турбо Паскаля (или поиск с помощью опции
/F в командной строке компилятора ТРС.ЕХЕ) не обнаружила оператор,
соответствующий заданному адресу.
118 Include files are not allowed here (Здесь не допускаются включаемые
файлы) .
Раздел операторов должен целиком размещаться в одном файле.
119 No inherited methods are accessible here (В этом месте программы нет
унаследованных методов).
Вы используете зарезервированное слово INHERITED вне метода объекта или в
методе, который не унаследован от родительского объекта.
120
Ошибка с этим кодом не описана в версии 7.0 системы Турбо Паскаль. .
121 Invalid qualifier (Неверный квалификатор).
Возможные причины сообщения:
122 Invalid variable reference (Недействительная ссылка на переменную).
Предыдущая конструкция удовлетворяет синтаксису ссылки на переменную, но она
не указывает адрес памяти. Возможно Вы вызываете функцию-указатель, но забываете
сослаться на результат с помощью знака.
123 Too many symbols'(Слишком много символов) .
Программа или программный модуль содержат более 64 Кбайт символов. Если Вы
компилируете программу с директивой {$D+}, то попробуйте отключить эту директиву
или разбейте программу на несколько модулей.
124 Statement part too large (Слишком большой раздел операторов).
Турбо Паскаль ограничивает размер раздела операторов до величины примерно 24
Кбайта. Если Вы обнаружили эту ошибку, поместите части раздела операторов в одну
или несколько процедур и вообще сделайте Вашу программу более структурированной.
125
Ошибка с этим кодом не описана в версии 7.0 системы Турбо Паскаль.
126 Files must be var parameters (Файлы должны передаваться как
параметры-переменные) .
Вы пытаетесь передать процедуре или функции параметр-значение файлового типа.
Параметры файлового типа должны быть параметрами-переменными.
127 Too many conditional symbols (Слишком много условных символов).
Недостаточно памяти для определения условных символов (слов, управляющих
командами условной компиляции). Попытайтесь удалить некоторые символы или
уменьшить их длину.
128 Misplaced conditional directive (Пропущена условная директива).
Компилятор обнаружил директиву {$ELSE} или {$ENDIF} без соответствующих директив
{$IFDEF}, {$IFNDEF} или {$IFOPT}.
129 ENDIF directive missing (Пропущена директива
ENDIF).
Исходный файл закончился внутри конструкции условной компиляции. В исходном
файле должно быть равное количество директив {$IFxxx} и
{$ENDIF}.
130 Error in initial conditional defines (Ошибка в условных определениях).
Исходные условные символы.указанные в опции OPTIONS/COMPILER /CONDITIONAL
DEFINES являются недействительными. Турбо Паскаль требует нуля или более
идентификаторов, разделенных пробелами, запятыми или точками с запятой.
131 Header does not match previous definition (Заголовок не соответствует
предыдущему определению).
Возможные причины сообщения:
132 Critical disk error (Критическая ошибка диска).
Во время компиляции произошла критическая ошибка диска (например, дисковод
находится в состоянии «не готов»).
133 Cannot evaluate this expression (Нельзя вычислить данное выражение).
В выражении-константе или в отладочном выражении Вы пытаетесь использовать
неподдерживаемые средства, например, в описании константы пытаетесь использовать
функцию SIN или вызвать в отладочном выражении определенную пользователем
функцию.
134 Expression incorrectly terminated (Некорректное завершение выражения).
Контекстуально в данном месте программы должен быть конец выражения или
оператора.
135 Invalid format specifier (Неверный спецификатор формата).
Используется
неверный спецификатор формата или числовой аргумент спецификатора формата
выходит за допустимые границы.
136 Invalid indirect reference (Недопустимая косвенная ссылка).
Оператор пытается осуществить недопустимую косвенную ссылку. Например, Вы
используете абсолютную переменную, базовая переменная которой в текущем модуле
неизвестна, или используете программу типа INLINE, в которой делается ссылка на
переменную, неопределенную в текущем модуле.
137 Structured variable are not allowed here (Здесь нельзя использовать
переменную структурного типа).
Делается попытка выполнить над переменной структурного типа неподдерживаемую
операцию. Например, Вы пытаетесь перемножить две записи.
138 Cannot evaluate without System unit (Нельзя вычислить выражение без
модуля SYSTEM).
Чтобы отладчик смог вычислить выражение, в файле TURBO.TPL должен содержаться
модуль SYSTEM.
139 Cannot access this symbol (Нет доступа к данному символу).
Как только Вы
скомпилируете программу, все множество ее символов становится доступным. Однако
к отдельным символам (например, к переменным) нельзя получить доступ, пока Вы не
запустите программу.
140 Invalid floating-point operation (Недопустимая операция с плавающей
запятой) .
При выполнении операции с плавающей запятой произошло переполнение или
деление на ноль.
141 Cannot compile overlay to memory (Нельзя выполнить компиляцию оверлейных
модулей в память).
Программа, использующая оверлейные модули, должна компилироваться на диск.
142 Procedure or function variable expected (Должна использоваться переменная
процедурного типа).
В этом контексте оператор получения адреса @ может использоваться только с
переменной процедурного типа.
143 Invalid procedure or function reference (Недопустимая ссылка на процедуру
или функцию).
Возможные причины сообщения:
144 Cannot overlay this unit (Этот модуль не может использоваться в качестве
оверлейного).
Попытка использовать в качестве оверлейного модуль, который не был
скомпилирован с директивой {$O+}.
145 Too many nested scopes (Слишком много вложений).
В программе не может быть больше 512 вложений с не более чем 128 вложениями в
каждом модуле. Вложениями считаются:
146 File access denied (Отказано в доступе к файлу).
Возможные причины:
147 Object type expected (Здесь должен быть тип OBJECT).
Этот идентификатор
должен принадлежать к типу OBJECT.
148 Local object types are not allowed (Нельзя объявлять локальные объекты).
Нельзя объявить объект в процедуре (функции).
149 VIRTUAL expected (Пропущено слово
VIRTUAL).
150 Method identifier expected (Пропущен идентификатор инкапсулированного
правила).
151 Virtual constructor are not allowed (Конструктор не может быть
виртуальным) .
153 Destructor identifier expected (Пропущен идентификатор деструктора).
154 Fail only allowed within constructor (Обращение к стандартной процедуре
FAIL может содержаться только в конструкторе).
155 Invalid combination of opcode and operands (Недопустимая комбинация кода
команды и операндов).
Код ассемблерной команды не может иметь такие операнды. Причины ошибки:
156 Memory reference expected (Отсутствует адрес).
Операнд ассемблерной команды не содержит адрес. Вероятно, Вы забыли выделить
квадратными скобками индексный регистр, например, MOV АХ, BX+SI вместо MOV АХ,
[BX+SI] .
157 Cannot add or subtract relocatable symbols (Нельзя складывать или
вычитать перемещаемые символы).
В ассемблерных выражениях обоими операндами в операциях сложения или
вычитания могут быть только ссылки на константу. Идентификаторы переменных,
процедур, функций и меток являются перемещаемыми
символами и не могут использоваться в качестве двух операндов одновременно в
таких операциях. Если VAR -идентификатор переменной, a CONST — константы, то
предложения MOV AX, CONST+CONST и MOVE AX, VAR+CONST будут правильными, в то
время как выражение MOV AX, VAR+VAR недопустимо.
158 Invalid register combination (Недопустимая комбинация регистров).
Допустимыми комбинациями индексных регистров являются [ВХ] , [BpJ, [SI], [DI] ,
[BX+SI] , [BX+DI] , [BP+SI] и [BP+DI] . Другие комбинации (например, [АХ] ,
[BP+BX] , [SI+DX]) недопустимы. Заметим, что локальные переменные размещаются в
стеке и доступ к ним организуется через регистр ВР. Ассемблер автоматически
добавляет [ВР] в ссылках на такие переменные, поэтому в операндах типа LOCAL
[ВХ] , где LOCAL — локальная переменная, образуется недопустимая ссылка
LOCAL[BP+BX].
159 286/287 instructions are not enabled (Недоступен набор команд
микропроцессоров 286/287) .
Используйте директиву {$G+}, но учтите, что такую программу можно исполнять
только на ПК, оснащенных микропроцессором Intel 80286/80287 или более поздним.
160 Invalid symbol reference (Недопустимая ссылка на символ).
К указанному
символу нельзя обратиться в ассемблерной программе. Это может быть следствием
таких причин:
161 Code generation error (Ошибка генерации кода).
Ошибка возникает, в частности, при компиляции ассемблерных фрагментов,
содержащих команды LOOP, LOOPE, LOOPNE, JCXZ, если команда ссылается на
недоступную метку.
162 ASM expected (Отсутствует зарезервированное слово
ASM).