Современные Методы Получения Массивов Данных из HTML-Форм с Delphi
В процессе разработки веб-приложений на Delphi иногда возникают ситуации, когда необходимо получить массив значений из HTML-формы, содержащей несколько элементов с одинаковыми именами. В данной статье рассмотрим, как можно решить эту задачу, используя примеры кода на Object Pascal.
Проблема
Разработчик столкнулся с проблемой извлечения массива значений из HTML-формы, которая выглядит следующим образом:
Он знает, как получить значение отдельного элемента формы, но не знает, как обработать массив:
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