Object Pascal в 2024-м

421d7763296bfc4728f27ea58150b3e0.png

Всем привет! Меня зовут Сергей!

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

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

Возможно статью разобью на несколько частей. Это я уже буду смотреть на то, что я сумею изложить в данной статье и как много места она будет занимать.

Дальше просто пропускайте не нужную вам информацию.))) И прошу простить если приходится листать далеко.

Оглавление

Немного о себе

Чтобы вы понимали, я не профессионал своего дела, но и опыта программирования у меня достаточно не мало. И в каких-то моментах я могу ошибаться.

Мои основные языки программирования (далее ЯП) это Ассемблер и Паскаль. Создавал программы, для своего общего образования на Java, C/C++, Perl и языках разметок. По своему занятию приходится читать текст разных ЯП и переводить/модифицировать их код на Паскаль. Даже изучал такой ЯП как Erlang, язык достаточно специфичный и не стал в него сильно углубляться.

На данный момент, я ведущий разработчик кроссплатформенной библиотеки ZenGL (не путайте, это паскалевская библиотека), по негласному соглашению с Андреем. До этого ей занимался Андрей Кемка, он её «забросил», а я случайно на неё наткнулся. В момент когда данная библиотека попала ко мне в руки все создаваемые программы можно было собрать только под Windows или Linux. Возможно устаревшими методами можно было собрать под старые: Android, iOS и Mac;, но это было достаточно не просто.

В данный момент библиотека поддерживает платформы: Windows, Linux, MacOS и Android (наверняка ещё можно собрать под разные консоли, на которых стоят Windows или Linux).

Начинал я программировать ещё со Спектрума и даже сейчас не вспомню с какого. Понятно дело в данном случае моим первым ЯП был Бейсик Спектрума. Потом я столкнулся с Паскалем на Спектруме, там он мне не понравился и я его почти не запомнил. Пошёл учиться на радиотехника. Хотел на программиста, но как обычно места в программистах были уже заняты. Но со временем я даже не стал переводиться на другую специальность, потому что программирование у нас тоже было, а тут я ещё глубже смог углубиться в схемотехнику. Что как раз немного помогает (лично мне) понимать как всё происходит на низком уровне, на уровне даже ниже чем машинный код.))) Большинству это не нужно.

В техникуме у нас был вроде Турбо Паскаль (хотя может и другие ЯП), но для меня это было слишком просто. Я занимался программированием у знакомого и изучал как Паскаль, так и Ассемблер, но вот только Ассемблер для Спектрума.

После учёбы — работа, потом ушёл в армию, потом вновь работа по специальности Электрика. Стал индивидуальным предпринимателем по электрике. И в недалёком прошлом завязал с электрикой (ну почти завязал). Где-то в этом же периоде делал танки. Все же помнят Battle Tanks? Вот я и решил что-то подобное сделать. Опыта в создании игр было мало, но что-то получалось.

Но после очередной переделки основы, наткнулся на ZenGL. И увлёкся разработкой библиотеки. За период разработки получил достаточно не мало знаний, но они больше нужны на низком уровне и зачастую только один раз. Не нужно часто изобретать колесо, чтоб потом его просто использовать. Потому многие основы заложенные в ZenGL просто используются и не меняются очень многое время. Хотя правки всё равно приходится делать.

В общем на данное время я занимаюсь в основном программированием. А так же немного схемотехникой.

Почему я решил написать эту статью?

Достаточно недавно мне пришёл заказ на переделку каких-то частей сайта. Код был дан на Perl, а перевести его надо было на Pascal. Я бы наверно отказался, если бы не одно НО. Я и так очень долгое время отодвигал работу с сетью. Все наработки что я изучал были для статичных программ и к сети я не прикасался ни разу. И надо же было хоть когда-то начать.

И я решил что пора закончить откладывать и пора уже заняться.

За пару недель немного изучил HTML, сетевые запросы GET, POST. Ну и всякую мелочь. И уже в предвкушении думаю: «А может сайт создать на Паскале?!».

… сталкиваюсь с БД (база данных)… Думаю многие меня поймут, кто помнит как это начинать. Практически любой сайт должен работать с БД, и как раз на изучение работы с БД у меня ушло больше всего времени. Да, я стал больше понимать как всё работает. Стал понимать какие-то свои ошибки в этом направлении, но всё равно многое не достаточно понятно. Чтобы вы понимали, я стараюсь вникнуть в происходящее внутри и иногда слишком дотошно. Мне важно понять как всё работает.

И я решил написать простенькую программу для работы с БД, после того как понял самое основное. Как для практики, так и для использования. У меня есть Game Stick Lite и у меня возникло давно желание «переделать его основу», точнее перелопатить весь список игр и впихнуть туда свои, и чтоб в Game Stick Lite всё нормально работало.

И вот тут я как раз и встретился в очередной раз со многим: с проблемами мелкими, насколько достаточно у меня стало знаний, чтоб понимать как всё работает. А самое важное, это то, что я понимаю, что многие не знают того что я знаю. И я решил поделится информацией.)))

А в следующей статье, глядишь поделюсь готовой программой.

«Простые уроки»

Многим данные видео можно просто пропустить, они несут только основную информацию по работе с Lazarus. Многое объяснено до меня и у большинства с этим проблем обычно нет.

Я надеюсь у вас не будет проблем с установкой FPC/Lazarus, а если всё-таки будут, то на просторах интернета достаточно примеров как их можно установить. Если будут возникать какие-то вопросы, то обращайтесь сюда, сюда или ко мне. Я так же на какие-то вопросы смогу дать вам ответ, хотя на форумах вам могут быстрее помочь.

Извиняюсь, но для Delphi я не могу предоставить ссылок, так как для этого нужны достаточно надёжные источники. Вам придётся самим искать эту информацию или будем надеяться что какой-нибудь добрый человек скинет ссылку (ссылки) под статью.

Что-то я здесь не буду ни расписывать, ни задевать. Очень многое по урокам расписано в книгах по Delphi, а так же можете посмотреть уроки по Lazarus на ютубе (не мои). Пробежимся по тому о чём меня достаточно часто спрашивали и тем моментам, о которых я думаю стоит знать людям, которые будут использовать Lazarus.

Создание, открытие и сохранение проекта.

Работа с формой, компонентами. Изменение свойств компонент и тестирование кода.

Настройка IDE Lazarus и настройка проекта.

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

Расширенные примеры

Группы из кнопок SpeedButton

Многим известно использование SpeedButton, но в данном случае мы имеем возможность работы с группой кнопок, где при нажатии одной кнопки, любая из остальных нажатых в группе будет отжата. Точнее получается, что в группе может быть нажата только одна кнопка.

Извиняюсь за качество видео, записывал достаточно давно.

Так же в Lazarus есть возможность устанавливать множественные курсоры и работать с ними. Зажимаем Ctrl + Shift и левой кнопкой мыши выбираем место для очередного курсора в редакторе кода. В начале виде показываю как это работает.

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

Итог

Даже при том что многие сейчас не стремятся писать на Паскале, то рассматривая IDE Lazarus можно понять, что данная оболочка развивается и по сей день и имеет достаточно не малую функциональность. Позволяя настраивать как саму оболочку, так и её рабочее окружение.

FPC/Lazarus, Delphi и многие другие Паскали продолжают развиваться, какие-то больше, какие-то меньше. Люди продолжают использовать Паскаль в своих интересах и разработках. Паскаль позволяет делать проекты под разные платформы и при этом является компилируемым ЯП, чем не многие ЯП могут похвастаться (ни в коем случае это не занижение возможностей других ЯП!).

Сообщество Паскаля достаточно не маленькое. Если смотреть только англоязычный форум Lazarus, то можно увидеть что там ежедневно общаются десятки людей. Но если присмотреться повнимательнее, то можно увидеть что подобных форумов очень много и они на разных языках. Да, там меньше людей общаются и задают вопросы, даже есть наш русскоязычный сайт.

Я не думаю что сообщество Delphi меньше. И наверняка там так же продолжает кипеть работа, а ведь не так и редко есть работа для людей которые используют Delphi.

Я вас не призываю использовать Паскаль. Я лишь провёл маленький обзор на одну из его оболочек. А вы всегда в праве выбрать тот ЯП который вам больше всего подходит!)))

Доделаю проект, покажу что получилось в конечном итоге. Уж очень мне охота Game Stick Lite перелопатить.)))

Всем успехов!

© Habrahabr.ru