Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Использование JavaScript в приложениях Delphi: передача данных между клиентом и сервером

Delphi , Синтаксис , API реализация

В современном веб-разработке часто возникает необходимость взаимодействия между JavaScript и серверными скриптами, написанными на различных языках, в том числе и на Object Pascal, используемом в среде разработки Delphi. Одним из таких примеров является передача данных, полученных в результате выполнения JavaScript, обратно в приложение Delphi.

Проблема и решение

Пользователь столкнулся с проблемой в коде, где функции GrabDist и вызов функции, по всей видимости, были реализованы некорректно и не требовались. Предложено альтернативное решение, заключающееся в сохранении результата выполнения JavaScript в скрытое поле HTML-страницы.

Подход к решению

Для передачи результата работы JavaScript-скрипта обратно в приложение Delphi, необходимо добавить скрытое поле в HTML-страницу. Это поле будет использоваться для хранения результата расчёта расстояния между двумя точками на карте.

<input type="hidden" id="hiddendistance" value="0" />

Далее, следует модификация JavaScript-рутины. В ней используется функция для расчёта расстояния между двумя точками на поверхности Земли, используя формулу Гаверсинуса. Поскольку в Delphi есть проблемы с комментариями, расположенными в конце строк кода, рекомендуется их убрать.

function distance(lat1, lon1, lat2, lon2, unit) {
  var R = 6371; // радиус Земли
  var dLat = deg2rad(lat2-lat1);
  var dLon = deg2rad(lon2-lon1);
  var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
          Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) *
          Math.sin(dLon/2) * Math.sin(dLon/2);
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
  var d = R * c;
  if (unit=="N") d /= 1.60934; // конвертация в мили, если нужно
  document.getElementById("hiddendistance").value = d;
  return d;
}
function deg2rad(deg) {
  return deg * (Math.PI/180);
}

После выполнения JavaScript-скрипта, результат будет сохранён в скрытое поле, и его можно будет получить из приложения Delphi.

Пример кода на Delphi

В приложении Delphi необходимо использовать процедуру ExecuteScript для выполнения JavaScript-кода и функцию для получения значения из скрытого поля.

procedure TForm1.ExecuteScript(AScript: string);
begin
  HTMLWindow2.execScript(AScript, 'JavaScript');
end;

procedure TForm1.btnTestDistanceClick(Sender: TObject);
const
  lat1 = '47.6740243';
  lng1 = '-122.1220361';
  Lat2 = '34.0691975';
  Lng2 = '-117.2141603';
var
  s: string;
begin
  s := Format('distance(%s,%s,%s,%s,%s)', [lat1, lng1, Lat2, Lng2, '"N"']);
  ExecuteScript(s);
  ShowMessage('Distance: '+GetElementValue('hiddendistance'));
end;

Обратите внимание, что функция GetElementValue должна быть реализована в вашем приложении для получения значения из HTML-элемента.

Заключение

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

Создано по материалам из источника по ссылке.

В контексте обсуждается метод передачи данных, полученных в результате работы JavaScript, обратно в приложение, разработанное с использованием Delphi, через скрытое поле в HTML-странице.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: API реализация ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 11:46:28/0.0052940845489502/1