Код программы для lazarus

Службы в Windows или как они называются в *nix системах Демоны предназначены для выполнения ряда определенных задач без вмешательства пользователя, таких как FTP сервер, WWW или MySQL. Благодаря Lazarus мы можем создавать такие демоны, используя пакет lazdaemon.

Для того чтобы начать разработку службыдемона, установите пакет lazdaemon, который по умолчанию входит в состав Lazarus. Установить вы его можете как через пункт меню «Пакет/Установка и удаление пакетов», так и через запуск lpk файла из папки: lazarus/components/daemon/lazdaemon.lpk

Итак, как обычно начнем с постановки задачи: Чтобы особо не мудрить создадим простую службу, в которой будет запускаться поток, и заносить в файл некий текст вплоть до ее остановки. Запускаться данная служба должна автоматически при старте системы, иметь имя devlaz.

Приступим. После установки пакеты lazdaemon при создании нового приложения, в конце должны добавится 3-и строки. Нас будет интересовать Приложение-демон (служба)

Lazarus IDE Обзор преимуществ / Особенности / Установка, Удаление / FpcUpDeluxe / 2022 / Free Pascal

1

При создании нового проекта будет открыто автоматически 2 невизуальных формы — класс TDaemon и TDaemonMapper.

TDaemon — непосредственно экземпляр сервиса. Именно этот объект реализует сам сервис (его мы видим в Windows в «Управление компьютерами/Сервисы»). Что требуется выполнить передпосле установкойудаления службы,

TDaemonMapper — Этот компонент выполняет регистрацию службы в системе. Здесь мы можем написать код, который будет выполнятся после установки демона, его удаления и при его запуске.

В свойствах DaemonMapper1 есть параметр DaemonDefs, выбираем его и жмем добавить:

DaemonMapper

Добавив новый поток демона и выбрав его, мы должны увидеть его свойства:

Daemon

DaemonClassName по умолчанию это TDaemon1

Description Это описание нашей службы

DisplayName Отображаемое имя службы

Name Имя службы

Данных свойств достаточно для запуска нашей службы.

Теперь давайте напишем код. Выбрав DaemonUnit1 добавим в исходный код наш поток и опишем в переменной файл в который будет происходить запись:

type < TMyThread >TMyThread = Class(TThread) public procedure Execute; override; end; var Daemon1: TDaemon1; My:TMyThread; FF:TextFile; implementation

DaemonUnit

Далее на событие OnStart

добавим следующий код:

procedure TDaemon1.DataModuleStart(Sender: TCustomDaemon; var OK: Boolean); begin My:=TMyThread.Create(False); end;
procedure TDaemon1.DataModuleStop(Sender: TCustomDaemon; var OK: Boolean); begin My.Terminate; CloseFile(FF); end;

Читайте также:
Программа чтобы общаться по видео

Ну и опишем код нашего потока:

Уроки программирования в Lazarus. Урок №1. Обзор среды программирования, типов проектов в Lazarus


procedure TMyThread.Execute; var i:integer; begin AssignFile(FF,’D:log.txt’); rewrite(FF); repeat writeln(FF,’OK ‘+IntToStr(I)); inc(I); sleep(2000); until Terminated; end;

Теперь компилируем наш проект и запускаем исполняемый файл с параметром -i для того чтобы он установился в системе. Увы автоматический запуск после этого я настроить не смог, если кому-то это удалось подскажите добавлю в статью, поэтому запускаем службы вручную из mmc оснастки Службы:

Службы

Ждем примерно 10 секунд и останавливаем ее отсюда же. В результате чего в файле D:log.txt должны появится записи свидетельствующие о работе потока.

Для удаления службы из систему требуется указать ключ -u

Путь до службы желателен без русских символов.

Доп. информацию вы можете прочесть на сайте Wiki

Создание службы в Lazarus обновлено: 22 февраля, 2017 автором: Oleg E.

Share

10 комментариев “ Создание службы в Lazarus ”

Не могли бы вы описать процесс вывода данных из формы сделанной в Lazarus в шаблон документа ms office ? Т.е. есть шаблон например договора, забиваем данные в форму (номер договора, дата и пр. ) и эти данные вставляются в нужные места в документе.
С уважением Олег

Oleg E. says:

Привет Олег. Вам стоит обратить внимание на компонент FPSpreadsheet, подгружать ваш шаблон и воспользоваться функцией замены текста.

Жанат says:

Надо добавить Utf8ToSys а то не будет работать с кириллицей
WordApp.Selection.Find.Text:= WideString(Utf8ToSys(‘Текст’));
WordApp.Selection.Text:= WideString(Utf8ToSys(‘Привет’));

Жанат says:

Здравствуйте. А можете рассказать как сделать так , чтобы приложением созданным в lazarus могли пользоваться определенное время, а потом нужно было вводить лицензионный ключ или другую возможность, чтобы можно было ограничить время использования программы. Чтобы можно было скачать триал версию приложения, а потом если понравилось купить лицензию , ключ или др. За ранее спасибо

Oleg E. says:

Тут нужно определится как вы будете реализовывать данную технологию. Фиксировать запуск программы, записывая время в файл на ПК или где-то в облаке(что мне больше нравится, но тогда надо ограничить запуск при отсутствии интернета.)
Хранить ключ программы в открытом виде в исходнике тоже не стоит, ибо легко можно будет его легко вытащить.
Нужно чтобы 1-ый ключ формировался по определенному алгоритму, жестко привязываясь к железу, далее отправлялся запрос на сервер. Где обрабатывался и присылался уже 2-й ключ программы для данного ПК. Если интернета нет, то активацию можно делать по Е-Маил или телефону.
Увы описать данный код 10-ю строчками не получится. Требуется писать код как в программе, так и на стороне сервера, например php.

Читайте также:
Почему в itunes не видно программы

Vadim says:

Здравствуйте. Хорошая статья. Все понятно изложенно.
Вот если обьяснили как связать службу и моё прлилложенние.

Oleg E. says:

В принципе вам просто надо запустить основные потоки вашего приложения. Больше сказать трудно увидев ваш код.

Евгений says:

Зравствуйте!
Спасибо за статью.
Не могли бы вы подсказать как прикрутить к сервису компоненты
TSimpleIPCClient
TSimpleIPCServer
чтобы сервис мог слушать мое приложение и отвечать ему.
У компонента TSimpleIPCServer есть метод MessageQueued который ловит сообщения от клиентов. Не пойму как сделать так, чтобы этот метод срабатывал в созданном потоке?

Источник: devlaz.ru

Lazarus IDE

В данном уроке мы продолжим рассматривать стандартные компоненты управления приложением. Результатом работы станет программа калькулятор.

На прошлом занятии мы познакомились с компонентами Кнопка (Button), Надпись (Label) и Текстовое поле (Edit). Все эти три компоненты используются наиболее часто при создании графических программ в том числе и при создании калькулятора. Но чтобы изучить новые элементы Lazarus мы создадим каклькулятор без использования кнопок.

Для начала разместим на форме необходимые элементы:

Окно формы после добавление элементов.

Далее нужно изменить свойства элементов и расположить их в удобном порядке.

Элемент Свойство Значение

RadioButton5 Caption null

RadioButton6 Caption Очистить

TrackBar1 Min 0

TrackBar1 Max 100

CheckBox1 Caption Равно

В итоге должно получиться примерно так.

Теперь необходимо добавить код, чтобы калькулятор заработал.

После служебного слова var объявим переменную V1 типа real, которая будет служить хранилищем чисел.

Далее переходим на форму. Для быстрого перехода между формой и окном исходного кода нажмите F12.

На форме дважды кликните по компоненте TrackBar1. Автоматически создастся процедура, которая срабатывает при изменении положения ползунка TrackBar1. Сделаем так, чтобы значение, на котором установлен ползунок, передавалось в поле Edit1. Для этого в процедуру между begin и end добавим сроку:

Читайте также:
Какая программа предназначена для создания и редактирования таблиц Microsoft

Теперь соединим кнопки операций с надписью.

Кликаем на RadioButton1 (её мы сделали +) и добавляем код:

Аналогичным образом добавить код в RadioButton2, RadioButton3, RadioButton4 (-, / и * соответственно).

RadioButton5 будет использоваться для показания неактивности кнопок операций, т.к. нельзя снять показатель выбора со всех радиокнопок одновременно.

Теперь напишем главную часть нашего калькулятора. Нам нужно реализовать следующий алгоритм:

1. Выбираем число.

2. Выбираем тип операции.

3. Выбираем второе число.

4. Нажимаем на галочку чекбокс (CheckBox1).

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

V1:=StrToFloat(Edit1.Text); //сохраняем первое число в переменную V1
TrackBar1.Position:=0; //обнуляем бегунок выбора числа
Edit1.Text:=FloatToStr(V1); //возвращаем в строку результата сохраненное число

Теперь пользователь выбирает второе число и нажимает на галочку равно (CheckBox1). Реализуем следующий код:

if Label1.Caption=’-‘ then Edit1.Text:=FloatToStr(V1-StrToFloat(Edit1.Text));
if Label1.Caption=’+’ then Edit1.Text:=FloatToStr(V1+StrToFloat(Edit1.Text));
if Label1.Caption=’/’ then Edit1.Text:=FloatToStr(V1/StrToFloat(Edit1.Text));
if Label1.Caption=’*’ then Edit1.Text:=FloatToStr(V1*StrToFloat(Edit1.Text));

В каждой строке программа сначала считывает текст из Label1 и сравнивает его. В первой строке, например, сравнивает с минусом (‘-‘). Далее если совпало, то в поле Edit1 записывает результат вычисления (первое число минус второе).

В конце данной процедуры пишем следующую строчку кода:

Данная строчка возвращает в переменную V1 значение последнего вычисления.

Последним штрихом нашего приложения станет радиокнопка Очистить (RadioButton6). При нажатии на неё будет происходить очистка и обнуление всех основных структур и переменной. Добавляем в неё следующий код:

V1:=0; //обнуляем переменную
TrackBar1.Position:=0; //обнуляем бегунок выбора числа
Edit1.Text:=’0′; //переписываем поле Edit1
RadioButton5.Checked:=true; //переключаем на радиобаттно null

Калькулятор готов. Теперь запустите программу и протестируйте её.

Задание.

Модифицируйте программу, заменив элемент TrackBar на Edit, а все RadioButton на CheckBox.

Источник: seregazar.wixsite.com

lazarus Как создать консольное приложение — тип проекта для простых программ

vedro-compota's picture

Запустите Lazarus.
Чтобы создать консольное приложение в Lazarus из главного меню:

    Русская версия, windows:

Файл -> Создать -> Проект -> Программа
Project -> New Project. -> Program

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru