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

Передача массивов и записей в качестве параметров процедур в Delphi: быстрые и эффективные методы

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

Передача массивов и записей в качестве параметров процедур в Delphi

При работе с процедурами в Delphi иногда возникает необходимость передачи массивов или записей в качестве параметров. Это может быть удобно, если не хочется объявлять промежуточные переменные. В данной статье рассмотрим, как это можно сделать.

Передача массивов

В Delphi начиная с версии XE7 и выше, можно передавать массивы в процедуры напрямую, используя новый синтаксис инициализации динамических массивов. Например:

program Project1;
{$APPTYPE CONSOLE}
type
  TMyArray = array of ShortString;
procedure MyProc(const A: TMyArray);
var
  s : ShortString;
begin
  for s in A do WriteLn(s);
end;
begin
  MyProc(['no', 'trump', 'please']);
  ReadLn;
end.

Вывод программы будет следующим:

no
trump
please

До версии XE7 для инициализации динамического массива необходимо было использовать явный конструктор:

MyProc(TMyArray.Create('no', 'trump', 'please'));

Передача записей

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

type
  TMyRecord = record
    param: ShortString;
    value: ShortString;
  end;

function CreateRecord(AParam, AValue: ShortString): TMyRecord;
begin
  Result.param := AParam;
  Result.value := AValue;
end;

procedure MyProc(const R: TMyRecord);
begin
  WriteLn(R.param);
  WriteLn(R.value);
end;

begin
  MyProc(CreateRecord('foo', 'bar'));
  ReadLn;
end.

Вывод программы:

foo
bar

Альтернативные методы

Для старых версий Delphi, где напрямую передать массив в процедуру нельзя, можно использовать промежуточную функцию, которая копирует динамический массив в массив нужного типа:

function AsTypeArray(const MyArray: array of ShortString): TMyArray;
begin
  SetLength(Result, Length(MyArray));
  Move(MyArray[Low(MyArray)], Result[0], Length(MyArray) * SizeOf(MyArray[Low(MyArray)]));
end;

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

MyProc(AsTypeArray(['no', 'trump', 'please']));

Также для записей потребуется аналогичная функция, возвращающая тип записи.

Заключение

Передача массивов и записей в процедуры в Delphi может быть выполнена несколькими способами. В новых версиях Delphi (XE7 и выше) это делается напрямую, в то время как в старых версиях потребуется использование промежуточных функций. Выбор метода зависит от конкретных требований и используемой версии компилятора.

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

Статья о передаче массивов и записей в качестве параметров процедур в среде разработки Delphi.


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

Получайте свежие новости и обновления по 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 12:36:29/0.0014028549194336/0