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

Современные Методы Получения Массивов Данных из HTML-Фор с Delphi

Delphi , Синтаксис , Массивы

Современные Методы Получения Массивов Данных из HTML-Форм с Delphi

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

Проблема

Разработчик столкнулся с проблемой извлечения массива значений из HTML-формы, которая выглядит следующим образом:

<form method="post">
  <input type="hidden" name="keyword[]" value="1"/>
  <input type="hidden" name="keyword[]" value="2"/>
  <input type="hidden" name="keyword[]" value="3"/>
  <input type="submit" value="submit"/>
</form>

Он знает, как получить значение отдельного элемента формы, но не знает, как обработать массив:

var
  cKeyword: String;
begin
  cKeyword := Request.ContentFields.Values['keyword'];
end;

Ищет способ получить массив значений, аналогичный тому, как это делается в PHP:

$aKeywords = $_POST['keyword'];

Решение

ContentFields — это обычный объект TStrings, следовательно, его свойство Values всегда возвращает строку. Если HTML-форма содержит несколько элементов управления с одинаковыми именами, они будут возвращены последовательно. Это означает, что объект TStrings будет содержать несколько записей с одинаковыми именами. Необходимо перебрать все записи, чтобы найти те, которые имеют одинаковые имена.

Подтвержденный ответ

Для решения задачи можно использовать следующий функционал:

function GetArrayFieldValues(ContentFields: TStrings; const FieldName: string): TStringDynArray;
var
  i: Integer;
  Values: TStrings;
begin
  Values := TStringList.Create;
  try
    for i := 0 to Pred(ContentFields.Count) do
      if ContentFields.Names[i] = FieldName then
        Values.Add(ContentFields.ValueFromIndex(i));
    Result := Values.ToStringArray;
  finally
    Values.Free;
  end;
end;

Используйте функцию следующим образом:

var
  aKeywords: TStringDynArray;
begin
  aKeywords := GetArrayFieldValues(Request.ContentFields, 'keyword[]');
end;

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

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

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


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

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




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


:: Главная :: Массивы ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-03-14 10:26:53/0.0033760070800781/0