Создание двумерных массивов в Delphi: использование синтаксиса индексации []
В Delphi для создания двумерных массивов с использованием синтаксиса индексации [] необходимо определить свойство Item, которое будет работать с несколькими индексами. Это позволяет обращаться к элементам массива так, как будто они являются одномерным массивом, где каждый элемент — это массив одного измерения.
Пример реализации двумерного массива
type
TMatrix<T> = class
private
function GetData(index1, index2: Integer): T;
procedure SetData(index1, index2: Integer; value: T);
public
constructor Create(dim1, dim2: Integer);
property Item[index1, index2: Integer]: T read GetData write SetData; default;
end;
Здесь мы определяем класс TMatrix<T>, который может быть использован для создания двумерных массивов различных типов данных. В приватном разделе класса мы определяем методы для чтения и записи значений, а в публичном — конструктор и свойство Item для доступа к элементам массива.
В примере выше создается двумерный массив целых чисел размером 3x3, затем в ячейку с индексами [0, 2] записывается значение 5, и после этого выводится значение этой ячейки на экран.
Альтернативный подход
Также возможен альтернативный подход, когда для доступа к элементам двумерного массива используется промежуточный объект, представляющий собой строку массива. В этом случае сначала обращаются к строке, а затем к ее элементу:
type
TMatrix<T> = class
public
type
TRow = record
private
FMatrix: TMatrix<T>;
FRowIndex: Integer;
function GetItem(ColIndex: Integer): T; inline;
procedure SetItem(ColIndex: Integer; const Value: T); inline;
public
property Items[ColIndex: Integer]: T read GetItem write SetItem; default;
end;
private
FData: TArray<TArray<T>>;
function GetRow(RowIndex: Integer): TRow; inline;
public
constructor Create(RowCount, ColCount: Integer);
property Rows[RowIndex: Integer]: TRow read GetRow; default;
end;
В этом случае для доступа к элементам двумерного массива используется следующий синтаксис:
В языке программирования Delphi для создания двумерных массивов с возможностью использования синтаксиса индексации [] необходимо определить соответствующее свойство Item с несколькими параметрами индекса. Это позволяет работать с двумерными массивами, как с одномерными, но с дополнительным измерением индексации. Также существует альтернативный подход с использованием промежуточного объекта, который представляет собой строку массива. Оба подхода позволяют эффективно использовать двумерные массивы в программировании на Delphi.
В Delphi для реализации двумерных массивов с использованием синтаксиса индексации `[]` необходимо определить свойство `Item`, которое поддерживает несколько индексов, обеспечивая удобный доступ к элементам массива.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.