Заметки · 26.08.2022

Установка Synapse в IDE Lazarus

О Synapse можно почитать вот здесь.

Скачать модуль можно здесь (ссылка на zip).

IDE Lazarus скачать можно здесь.

Модуль Synapse (как и большую часть модулей) вполне реально установить только для текущего проекта, не засоряя при этом среду разработки.

Надо только скачать архив с модулем и распаковать в каталог с проектом папку lib (пылится в директории source). Для удобства папку lib можно переименовать в synapse.

Теперь переходим в параметры проекта и подключаем папку с модулем:

После этого можно смело добавлять отдельные pas-файлы модуля в блок uses.

К примеру, чтобы реализовать логическую функцию пинга с помощью pingsend.pas вполне достаточно вот такого кода:

uses ..., pingsend;

// Событие на создание формы и возвращение ответа в Label1
procedure Ttest_form.FormCreate(Sender: TObject);
var
  ping: TPingSend;
begin
  ping := TPINGSend.Create;
  try
    ping.Timeout := 2000;
    if ping.Ping('ngdream.ru') = True then
    begin
      label1.Caption := 'IP адрес: ' + ping.ReplyFrom
      + #13 +
      'Ответ составил: ' + IntToStr(ping.PingTime) + ' мс';
    end
    else
    begin
      label1.Caption := 'Ошибка: ' + ping.ReplyErrorDesc;
    end;
  finally
    ping.Free;
  end;
end;

До использования pingsend.pas я пинговал хосты с помощью PowerShell (Test-Connection) и ожидал ответа от консоли с помощью (примерно) вот такой процедуры:

uses ..., Process;

procedure pingpowershell (hostname: string);
var
     ping: string;
     pingrun: TProcess;
     output_ping: Tstringlist;
     answer: string;
begin
 try
   ping:='test-connection -Count 1 -computer '+hostname+' -quiet';
   pingrun:=TProcess.Create(nil);
   pingrun.Executable:='powershell.exe';
   pingrun.Parameters.Add(ping);
   pingrun.Options:=pingrun.Options+[poNoConsole, poUsePipes, poWaitOnExit];
   pingrun.Execute;
   output_ping:=TSTringList.Create;
   output_ping.LoadFromStream(pingrun.Output);
   answer:=output_ping.Text;
   answer:=Trim(answer);
   pingrun.Free;
   output_ping.Free;
   if answer='False' then ShowMessage('Хост '+hostname+' не доступен');
   if answer='True' then
     begin
       ShowMessage('Хост '+hostname+' доступен');
     end;
   except
 end;
end;

// Вызвать процедуру в коде можно вот так:
pingpowershell ('ngdream.ru');

Такой метод меня частенько выручал, когда ничего другого под рукой просто не было. Само собой, такой приём крайне громоздкий и не информативный, работает только в ОС Windows.

С pingsend.pas работать намного приятнее и существенно меньше кода.

Немного оффтопа: раз уж затронул параметры проекта в IDE Lazarus…

Если убрать галочку с функции генерирования отладочной информации — скомпилированное приложение знатно «схуднёт».

Настройка доступна здесь:

Здесь я выложил логические функции для пинга удалённого хоста.