IPB
ЛогинПароль:

> 

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> FPC - настройка IDE, (для начинающих)
сообщение
Сообщение #1


Гость






Начинающим пользоваться FPC (переходящим с Турбо Паскаля)


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


I. Установка компилятора
(если у вас FPC уже установлен и работает - можете пропустить этот раздел и перейти сразу к настройке)

Наконец-то настал тот день, когда вы решили перейти с доброго и надежного (но уж очень старого) Турбо/Борланд Паскаля на гораздо более современный Free Pascal. Ура! Итак, с чего же нам начать? Ну, естественно, с установки компилятора.

Заходим на страничку закачек FreePascal: Download, ищем в списке название вашей архитектуры (Intel/AMD/PowerPC, и т.д), и переходим по ссылке с названием вашей ОС. И вот теперь - внимание: читаем инструкцию перед тем, как начать скачивать пакет. Вполне может случиться так, что по той ссылке, по которой вы перешли, лежит кросс-компилятор (т.е., компилятор, позволяющий собирать программу под одной операционной системой - Host OS - для ее выполнения под другой операционной системой - Target OS). Именно это происходит при попытке скачать FPC для Win64 для AMD:

Прикрепленное изображение -> Прикрепленное изображение

(обратите внимание на выделенное предупреждение: "Это пакет кросс-компилятора с i386-win32 на x86_64-win64. Перед тем, как вы сможете его использовать, вы должны установить FPC for i386-win32)

То есть, процесс выглядит так: (Показать/Скрыть)



II. Настройка компилятора
  1. Убеждаемся, что Options->Mode выставлено в Normal или в Debug, все-таки программы нужно для начала тестировать в режиме отладки, и только потом, если все работает, переключаться в Release.

    Внимание: все настройки, о которых пойдет речь ниже, будут применяться ТОЛЬКО для того режима, который является текущим. То есть, если вы измените какую-то настройку для Normal, а потом переключитесь на Debug - то никакого изменения там не заметите: будут использоваться значения по умолчанию для режима Debug. Менять настройки нужно для каждого режима по отдельности (я делаю проще: меняю для Normal, и пользуюсь только им, а Debug у меня с дефолтными установками)
    .
  2. Сразу же идем в Options->Compiler, и на вкладке Syntaх снимаем галочку с пункта "Allow Label and Goto" smile.gif Теперь использование Goto в программах будет считаться ошибкой, и вы будете четко видеть, на что в первую очередь нужно обратить внимание в коде.

    (я бы вообще снял все галочки в группе Syntax Switches для начала, если вам потом понадобятся какие-то из перечисленных "фич" - включить можно всегда)
    .
  3. В этой же вкладке, Compiler Mode можно установить в "Turbo Pascal compatible", чтобы при запуске графических программ у компилятора было меньше претензий.
    .
  4. Переходим на вкладку "Generated code". Здесь включаем (если они еще не включены) следующие опции:

    * Range Checking (это позволит вам получать при отладке ошибки в случае выхода за пределы массивов)
    * Stack Checking (что позволит отлавливать переполнение стека, это очень полезно при разработке рекурсивных подпрограмм, да и для нерекурсивных тоже может помочь)
    * I/O Checking (контроль правильности операций ввода/вывода)
    * Integer Overflow Checking (контролирует результаты некоторых операций с целыми числами и генерирует ошибку при слишком большом значении результата)

    Согласитесь, лучше получить эти ошибки при отладке и иметь возможность их исправить, чем допустить вылет программы при сдаче ее преподавателю или при ее запуске заказчиком, ведь ИХ настройки IDE могут отличаться от вашей...
    .
  5. Теперь идем на закладку Verbose, и в группе Verbose Switches устанавливаем галочки на:
    * Warnings
    * Notes
    * Hints
    * General Info

    Что это дает? Более детальную информацию об ошибках/недочетах в вашей программе. В идеале программа не должна вообще содержать не только ошибок, но и предупреждений.

    Вот небольшой пример.
    var i, j, value: integer;

    begin
    { тут какой-то код, в котором не присутствуют
    i и j, но присутствует и изменяется value }
    if i > value then
    begin
    { тут опять какой-то код }
    end;
    end.

    без показа Warning-ов не сообщает ни о чем, если включить отображение предупреждений - сразу получаем как минимум 2 сообщения:

    test.pp(5,6) Warning: Variable "i" does not seem to be initialized
    test.pp(1,8) Note: Local variable "j" not used


    То есть, во-первых, переменная i не была инициализирована, а во-вторых переменная j просто не используется. Сейчас многие начинающие программисты могут сказать: "А, да это мелочи, по умолчанию переменные инициализируются нулем, так что все в порядке, сообщение - лишнее". И напрасно. Не надо надеяться на автоматическую инициализацию. Я ж могу потом этот кусок программы оформить как процедуру:

      procedure p;
    var i, j, value: integer;
    begin
    { тут какой-то код, в котором не присутствуют
    i и j, но присутствует и изменяется value }
    if i > 0 then
    begin
    { ... }
    end;
    end;

    begin
    p;
    end.

    Компиляция по прежнему выдаст:

    ee.pp(5,8) Warning: Local variable "i" does not seem to be initialized
    ee.pp(2,10) Note: Local variable "j" not used


    И что? Где она, ваша автоматическая инициализация? smile.gif Не работает уже, в переменной i - мусор, она ж не глобальная, а локальная.

    Так что не торопитесь отключать предупреждения, замечания и хинты, они могут вам еще пригодиться при удалении неиспользуемых переменных и при отлове неинициализированных... Сколько вопросов на форуме было связано с тем, что "делал в основном блоке программы - все работало, перенес в процедуру/функцию - работать перестало" - не пересчитать. Не повторяйте чужих ошибок...
    .
  6. 5. Что еще можно сделать для отлова ошибок - это (находясь на любой вкладке в Options->Compiler) добавить в строку Additional Compiler args:

    Прикрепленное изображение
    , это позволит вам наблюдать после завершения программы отчет о количестве памяти, которую ваша программа не возвратила (это называется "утечкой", и с этим надо бороться), а если произошла ошибка - то отчет о том, в каком файле и в какой его строке находится исходный код, при выполнении которого эта ошибка произошла. Но учтите, это работает только в Debug/Normal режимах, в Release отладочная информация не генерируется, и взять данные о том, где именно произошла ошибка, неоткуда.
.

III. Настройка рабочего пространства (Desktop)

Для начала - Options->Environment->Preferences, и убеждаемся, что автосохранение выбрано не только для Environment и Desktop - файлов, но и для файлов редактора, для чего отмечаем Editor Files. Теперь перед запуском программы среда будет сохранять все исходники, и если произойдет какая-нибудь ошибка, и среду придется закрыть принудительно - вы не потеряете все внесенные изменения.

Теперь идем в Options->Environment->Desktop, и устанавливаем галочки:
  • History Lists (это будет сохранять список недавно открытых окон в меню File, ниже пункта Exit. Если отметку снять - то этот список сохраняться не будет, и после входа в IDE пункт File->Exit всегда будет последним. Не очень удобно)
    .
  • Watch Expressions (выбор этого пункта даст указание среде программирования сохранять также список просматриваемых в окне Watches переменных и выражений. Очень удобно при отладке - не надо каждый раз заносить заново выражения в список)
    .
  • Breakpoints (по крайней мере, я для себя этот пункт установил. Когда отлаживается какая-то программа, и мне становится временно не нужной точка останова - я ее никогда не удаляю, а просто отключаю через Debug->Breakpoint List->(правая кнопка мыши на нужной точке останова)->Toggle state, мало ли, потом опять понадобится вернуться к той же точке при тех же условиях. А поскольку обычно программа отлаживается не за одни раз, то и сохранение списка Breakpoint-ов тоже очень помогает.)

    Подробнее об отладке (правда, там - для Turbo Pascal-я, но принцип работы с отладчиком остается одинаковым) - см. здесь: Отладка программ
    .
  • Open Windows (Это должно быть включено по умолчанию, но все-таки проверьте. Будут сохраняться все открытые окна, причем на тех же местах, где они были при закрытии IDE.)
Идем дальше. Переходим в Options->Environment->Editor. Здесь тоже желательно изменить как минимум два параметра:

1. Tab Size. По умолчанию установлен в 8 пробелов - но это очень много, трех/четырех символов вполне достаточно.
2. Indent Size. По умолчанию = 1, но это не совсем удобно. Лучше выставить это значение одинаковым со значением Tab Size, тогда смещение блока будет более логичным - сразу на ту же величину, на которую Tab перебрасывает строку. Чтобы изменения этих значений вступили в силу, нужно перезапустить IDE.

Я надеюсь, все знают, что такое смещение блока текста, и зачем оно нужно? (Показать/Скрыть)


3. (хотя, как справедливо заметил Lapp, это не совсем работает) но все-таки если вас раздражает автодополнение ключевых слов - отключите его в этом же диалоге: снимите галочку с "CodeComplete Enabled"

Чтобы окончательно убрать автодополнение - нужно еще зайти в "Options->Environment->CodeComplete", и в поле "Min. Length" ввести любое значение, больше длины максимального слова из списка. Самые длинные слова в списке - Implementation и ResourceString (оба длиной 14 символов), то есть, вводите Min. Length = 15, и подсказок больше не будет...


Вроде бы с настройками разобрались... Теперь осталось еще кое-что. smile.gif

Настройка файлов помощи

Если вы привыкли к файлам помощи из Турбо Паскаля, и хотите их использовать и в FPC - это вполне возможно (по крайней мере, я так и делаю - для того, чтобы быстро посмотреть информацию на самые общеупотребимые процедуры/функции этого достаточно, а что посложнее - все равно придется лезть в PDF-ы или в MSDN). Просто скопируйте файлы TURBO.TPH и TVISION.TPH из папки с Турбо-Паскалем в ту папку, куда установлен FPC, зайдите в Help->Files, и по очереди добавьте эти два файла (нажатием на кнопку New). После закрытия диалога контекстная помощь будет такой же, как и в TP. Но в этом есть один недостаток - новые средства языка не отражены. Так что придется либо искать интересующую информацию в PDF-файлах, лежащих в папке \FPC\номер_версии\doc (благо, она там есть, на любой вкус), либо (если хотите и контекстную помощь именно от FPC) нужно скачать отсюда: http://www.freepascal.org/down/docs/docs-russia.html архив HTML-файлов (11 Мб), распаковать его, и добавить в Help->Files два файла: rtl\index.htm и ref\ref.html


Ну вот, вроде все о начальной настройке. Если есть вопросы (я имею в виду вопросы по настройке IDE, а не очередной холивар на тему использовать Goto или нет) - задавайте, попробуем помочь.

Отдельное спасибо Lapp-у за замечания по материалу.

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 16.08.2018 5:03
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"