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

В данной статье речь будет идти больше о 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 перелопатить. )))

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

Комментарии (23)


  1. Imaginarium
    02.08.2024 14:33
    +14

    Прочитав заголовок, надеялся в статье обнаружить описание особенностей языка с примерами в ООП, но этого нет. Надо было статью так назвать: "Lazarus IDE в 2024 году", и это было бы правильно.


    1. Seenkao Автор
      02.08.2024 14:33

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


      1. Imaginarium
        02.08.2024 14:33
        +2

        Ну и на здоровье -- я и говорю, проще название сменить.


  1. bodyawm
    02.08.2024 14:33
    +7

    И ObjPas и Delphi отличные языки. Недавно скачал понастольгировать Delphi 2010 и понял за что его люблю. Это максимальная экспрессивность!


  1. LuchS-lynx
    02.08.2024 14:33

    можно ли через Lazarus создавать/править файлы и оформление MS Office/Libre Office под Linux? Где можно об этом почитать с примерами?


    1. Seenkao Автор
      02.08.2024 14:33

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

      Люди занимались, но зачастую код теряется на просторах интернета.


    1. omxela
      02.08.2024 14:33
      +2

      Есть книжка: Корняков Василий "Программирование документов и приложений Ms Office в Delphi", БХВ-Петербург, 2005 (например).


    1. snowfox
      02.08.2024 14:33

      Есть пара ссылок, но я не знаю, в каком состоянии эти библиотеки.

      https://forum.lazarus.freepascal.org/index.php?topic=21868.0

      http://freepascal.ru/forum/viewtopic.php?f=5&t=11143


      1. Seenkao Автор
        02.08.2024 14:33

        Это одна и та же ссылка.


  1. NeoCode
    02.08.2024 14:33
    +1

    На Паскале писал только в школе. И синтаксис конечно на любителя, begin...end и некоторая многословность в синтаксических конструкциях (видимо Вирт пытался сделать язык более похожим на английский?). Но ничего против Паскаля не имею. Думаю, когда хайп вокруг языка прекращается, всё наносное исчезает и остается настоящее. Приятно что энтузиасты создали среду Lazarus и развивают ее. Компактная, но вполне функциональная IDE очень выгодно смотрится на фоне тех многогигабайтных монстров, в которых сейчас превратились коммерческие среды разработки.

    Однажды мне понадобилось провести какие-то эксперименты с самим языком, что-то с RTTI (я пишу некий труд, в котором сравниваю и анализирую фичи разных языков). И вот наткнулся на то, что там нужна версия fpc 3.3.1, а она почему-то еще не поставляется вместе с Lazarus. Увы, но везде сих пор используется 3.2.2.


    1. Seenkao Автор
      02.08.2024 14:33

      FPC 3.3.1 находится в разработке с очень давнего времени. Не знаю по какой причине их разделили, но возможно это какая-то промежуточная "тестовая" версия. Которую можно скачать кто хочет, но стабильности (вроде как) не гарантируют. Многие изменения уже были занесены в последнюю стабильную версию.

      Если сильно нужна версия FPC 3.3.1, то воспользуйтесь FPCUPDeluxe для установки этой версии. Хотя, сейчас наверно можно просто собрать FPC из командной строки. Я одну из версий FPC/Lazarus ради интереса и ставил используя командную строку. Вроде больших проблем не увидел.

      А Lazarus, умельцы, вроде как настраивали на другие ЯП. ))) Может просто в качестве редактора, точно не скажу.


    1. hurtavy
      02.08.2024 14:33

      Можно же установить с любой версией fpc, с помощью fpcupdeluxe


    1. Imaginarium
      02.08.2024 14:33

      я пишу некий труд, в котором сравниваю и анализирую фичи разных языков

      можно как-то подписаться на результат Ваших изысканий?


    1. ikle
      02.08.2024 14:33
      +2

      И синтаксис конечно на любителя, begin...end и некоторая многословность в синтаксических конструкциях (видимо Вирт пытался сделать язык более похожим на английский?).

      Вирт тут ни при чём: begin/end — это из Алгола, как, впрочем, и большая часть синтаксиса всех виртовских языков растёт именно из Алгола.


  1. ABRogov
    02.08.2024 14:33
    +5

    Делфи, как много в этом звуке... я даже лицензию купил за 1,5куска. Из всего опробванного самое оптимальное по результату, когда нужен просто десктопный ехешник. Все эти богомерзкие куте даже рядом не стояли.


  1. dyadyaSerezha
    02.08.2024 14:33
    +2

    Будучи сам в далеком прошлом фанатом Borland Delphi, все же спрошу: в статье не написано главное - зачем читателю изучать современный Паскаль? Много предложений работы по нему? Или предложений мало, но программистов ещё меньше и поэтому они всегда нарасхват и с длинным рублем или даже, не побоюсь этого слова, юанем? Зачем?


    1. express
      02.08.2024 14:33
      +1

      Основное отличие современного паскаля мне видится в возможности разработки мобильных приложений и добавки разных упрощенных конструкций (если раньше надо было, скажем, inttostr(a) или booltostr(a), то теперь можно не париться и использовать просто a.ToString.

      Насколько паскаль востребован в плане трудоустройства не скажу, так как не профессиональный программист, но в сисадминской практике мне Delphi помогает в быстрой автоматизации всякой рутины: как пример - выбрал из списка комп и пользователя, ткнул 2 кнопки и удаленка со сгенерированным паролем по RDP готова. За годы накопилась куча проектов - справочники, авторассылка временных ваучеров доступа к wifi и т. п. Т. е. можно быстро наваять практически любое приложение со скромными аппетитами, кроме, пожалуй, драйверов (и то, наверное, их тоже можно) и при этом без предустановки тонны всяких фреймворков.

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


      1. barbaris76
        02.08.2024 14:33
        +1

        В далёкие годы моего сисадминства/эникейства у нас был в отделе товарищ, который тоже всё автоматизировал через VC/MFC. Потом он уволился и после него осталась куча экзешников-в-себе, гора нечитабельного мусора вместо нормальных исходников и вот это вот всё. При том, что у нас на С++ вообще никто не кодил тогда.

        Пришлось всё переписывать на скриптах (


      1. dyadyaSerezha
        02.08.2024 14:33

        Для автоматизации рутины сисадмина/девопса на порядок лучше Python или PowerShell, если для Windows. У них кол-во библиотек раз в сто больше, чем у паскаля.


    1. Seenkao Автор
      02.08.2024 14:33

      Как минимум для своего образования. Если человек хочет выбрать какой-то ЯП, то Паскаль далеко не худший выбор. Но это не значит что надо бежать изучать Паскаль и кричать что надо изучать именно Паскаль.

      Всё то же самое что и с остальными ЯП.

      Хотите знать, я зарабатываю используя Паскаль.


    1. HemulGM
      02.08.2024 14:33
      +1

      Ну, во-первых, если у клиента есть потребность в решении, то никто не запрещает тебе написать его на Delphi. Клиент быстро получит решение и будет доволен.

      Во-вторых, много компаний которые не только используют Delphi, потому что кто-то когда-то им его создал и нужно допиливать, но и потому что создают новые решения на современном Delphi. Несмотря на все тенденции в языках, софт на Delphi создается очень быстро и требует меньше внимания в будущем, потому что нет никаких зависимостей. Я до сих пор могу на Win11 запустить софт на Delphi 20ти летней давности и он ни слова не обронит и будет без проблем работать.

      Где-то 10 лет назад, я написал свой первый коммерчески-успешный продукт для одного заказчика. С тех пор, он обращался ко мне лишь несколько раз, первые два раза - это были баги в расчетах, которые нужно было поправить, и два раза были обращения на добавление новых фич. До сих пор этот софт у них работает. А программа была не простая. Там и бд и сложные расчеты и 3D моделирование. Это была программа для расчета огромных ящиков по ГОСТу с изменяющейся моделью в реальном времени, базой заказчиков и историей их заказов. Программа создавалась ещё для XP, но они сами без проблем установили её на Win10, а сейчас может уже и на Win11. Программа обошлась им где-то в 300к + 100к на две новые фичи, а пользуются они ею уже 10 лет. Насколько это выгодно? Особенно, если бы это было какое-то решение на Web. А я потратил на эту программу где-то 3 месяца (параллельно с основной работой) + неделя.

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

      Также, на работе я поспорил с тех. лидом, что напишу мобильное приложение для просмотра 3D панорам быстрее, чем наши разработчики на Unity. И написал. В итоге, именно моё решение сейчас находится в некоторых магазинах Леруа Мерлен.


  1. VisualTech
    02.08.2024 14:33
    +1

    Кто бы что не говорил, а на FPC можно изготовить почти всё что угодно. Я автоматизирую бизнес, использую в работе собственную платформу Дизель-Паскаль, изначально написанную в Delphi, затем портированную на FPC/Lazarus. В основе системы - собственный интерпретатор компилирующего типа с 2х объектно-ориентированных языков с подвязанной к системе библиотеке компонентов LCL. Это позволяет запускать приложения Дизеля на разных платформах без перекомпиляции (x86-64 Windwos, Linux, Aarch64 Linux), а наличие всевозможных компонентов для FPC, позволяет реализовать на FPC почти всё что душе угодно. Я сам использую:

    - доступ к FireBird, Postgres через компоненты IBX, ZEOS,

    -для построения отчетов LazReport (правда пришлось допилить для QR кодов и DataMatrix).

    -электронные таблицы - fpSrpeadSheet, позволяет выводить отчеты в Excel, ooCalc и читать данные из этих форматов, причем наличия установленного какого либо офисного пакета вообще не требуется.

    -обмен данными по http, ftp, эл.почта и т.д. через библиотеку Synaplse. А т.ж. черз тот же Synapse по tcp протоколу с разными устройствами.

    - web сервисы через fpWeb (можно и на synapse сделать), обмениваюсь данными через web сервисы с 1С, раздаю отчеты по http.

    -замечательные парсеры xml и json

    В общем всё что нужно для автоматизации бизнеса в FPC есть, а феноменальная переносимость программ с графическим интерфейсом позволяет переносить приложение на множество платформ. Как я и говорил, изначально проект был основан на Delphi и я даже её покупал, как и сторонние компоненты. Портирование на FPC позволило избежать лицензионных зависимостей, да, что-то пришлось допилить, но теперь я не прибит гвоздями к Windows.

    Приложение Дизель-Паскаль с базой FireBird, клиент на aarch-64 + ALT Linux.
    Приложение Дизель-Паскаль с базой FireBird, клиент на aarch-64 + ALT Linux.


    1. HemulGM
      02.08.2024 14:33

      Delphi уже давно не прибит гвоздями к Windows, а только среда разработки RAD Studio. И софт можно создавать куда презентабельнее, чем это позволяет LCL.