//Ein paar Array-Funktionen wie sie in PHP ublich sind. //Some Array-functions like in PHP. type
ArrOfStr = arrayofstring;
implementationfunction explode(sPart, sInput: string): ArrOfStr;
beginwhile Pos(sPart, sInput) <> 0 dobegin
SetLength(Result, Length(Result) + 1);
Result[Length(Result) - 1] := Copy(sInput, 0,Pos(sPart, sInput) - 1);
Delete(sInput, 1,Pos(sPart, sInput));
end;
SetLength(Result, Length(Result) + 1);
Result[Length(Result) - 1] := sInput;
end;
function implode(sPart: string; arrInp: ArrOfStr): string;
var
i: Integer;
beginif Length(arrInp) <= 1 then Result := arrInp[0]
elsebeginfor i := 0 to Length(arrInp) - 2 do Result := Result + arrInp[i] + sPart;
Result := Result + arrInp[Length(arrInp) - 1];
end;
end;
procedure sort(arrInp: ArrOfStr);
var
slTmp: TStringList;
i: Integer;
begin
slTmp := TStringList.Create;
for i := 0 to Length(arrInp) - 1 do slTmp.Add(arrInp[i]);
slTmp.Sort;
for i := 0 to slTmp.Count - 1 do arrInp[i] := slTmp[i];
slTmp.Free;
end;
procedure rsort(arrInp: ArrOfStr);
var
slTmp: TStringList;
i: Integer;
begin
slTmp := TStringList.Create;
for i := 0 to Length(arrInp) - 1 do slTmp.Add(arrInp[i]);
slTmp.Sort;
for i := 0 to slTmp.Count - 1 do arrInp[slTmp.Count - 1 - i] := slTmp[i];
slTmp.Free;
end;
Программирование на Delphi: реализация функций массива, подобных функциям PHP
В этом разделе мы рассмотрим реализацию четырех функций массива на языке программирования Delphi: explode, implode, sort и rsort. Каждая из этих функций имеет свой собственный алгоритм работы.
explode(sPart, sInput: string): ArrOfStr
Функция разбивает строку sInput на массив строк, используя разделитель sPart.
Она проходит по входной строке до тех пор, пока не найдет разделитель, копирует подстроку перед разделителем в результат и удаляет разделитель из входной строки.
Процесс повторяется, пока вся входная строка не будет обработана.
В конце функция устанавливает последний элемент результата в оставшуюся часть входной строки (если есть).
implode(sPart: string; arrInp: ArrOfStr): string
Функция конкатенирует массив строк arrInp в одну строку, используя разделитель sPart.
Если длина входного массива равна 1 или меньше, функция просто возвращает первый элемент массива.
В противном случае она проходит по массиву и конкатенирует каждый элемент с разделителем, за исключением последнего элемента, который добавляется без разделителя.
sort(arrInp: ArrOfStr)
Процедура сортирует массив строк arrInp в порядке возрастания, используя временный объект TStringList.
Она создает объект TStringList, добавляет каждый элемент входного массива в него и затем сортирует его.
Затем она копирует элементы из объекта TStringList обратно в исходный массив.
rsort(arrInp: ArrOfStr)
Процедура сортирует массив строк arrInp в порядке убывания, используя временный объект TStringList, аналогично функции sort.
Некоторые предложения по улучшению кода:
Используйте встроенные функции Delphi для манипуляции строками, такие как Split и Join, вместо реализации своих собственных версий.
Рассмотрите использование generics для создания более типобезопасного и гибкого кода.
Упростите функцию implode с помощью одиночной цикла и конкатенации каждого элемента с разделителем.
Используйте встроенные функции Delphi для сортировки, такие как TStringList.Sort, вместо реализации своих собственных алгоритмов.
Вот обновленная версия кода, которая включает некоторые из этих предложений:
Обратите внимание, что я использовал встроенный тип TArray вместо custom array type и реализовал функцию Split с помощью метода Split типа string. Я также упростил функцию implode и заменял custom sorting logic на встроенную функцию TStringList.Sort.
В статье описаны несколько функций для работы с массивами на языке Delphi, которые аналогичны функциям, используемым в PHP.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.