Similar Pascal. Массивы
Массив - это тип данных, который может содержать произвольное количество значений произвольных типов (элементов). Программист может обратиться к любому элементу массива указав порядковый номер элемента. Тип массива в программе описывается как "Array Of Variant".
Procedure OnCreate; Var A : Array Of Variant; Begin End;
Array.Count - размер массива
Для получения или изменения размера массива используется свойство Count
Procedure OnCreate; Var A : Array Of Variant; Begin // Сейчас массив A содержит 0 элементов A.Count := 10; // Теперь массив A содержит 10 элементов End;
Array[N] или Array.Item(N) - Элемент массива
Доступ к элементу массива осуществляется с помощью оператора [], либо с помощью метода Item.
Procedure OnCreate; Var A : Array Of Variant; X : Variant; N : Integer; Begin A.Count := 10; A[7] := 'A'; // Установка значения 7-ого элемента A.Item(4) := 1000; // Установка значения 4-ого элемента N := 4; A[N] := 4.1; // Установка значения 4-ого элемента X := A[7]; // Получение значения 7-ого элемента и запись этого значения в переменную X Warning(A[4] As String); // Получение значения 4-ого элемента и вывод его на экран End;
Array.Append - Добавление элемента в массив
Для добавления элемента в конец массива предназначен метод Append
A.Append(15);
Остальные методы массива описаны в разделе справки Класс Array.
Ограничение типов значений
В языке программирования предусмотрена возможность ограничить типы значений, которые можно сохранить в массиве. Такие типы в программе описываются как Array Of Integer, Array Of Boolean, Array Of Dataset.
Procedure OnCreate;
Var
A : Array Of Integer;
Begin
A.Count := 10;
A[4] := 1000; // Установка значения 4-ого элемента
A[7] := 'A'; // Вы не можете сохранить в массив строку
End;
Копирование массивов
Массивы можно копировать с помощью оператора :=.
Procedure OnCreate; Var A, B : Array Of Integer; Begin A.Count := 5; A[3] := 100; B := A; A[3] := 200; Warning('A=['+ToStr(A)+'] B=['+ToStr(B)+']'); // A=[0,0,0,200,0] B=[0,0,0,100,0] End;
Команда []
Для удобного описания массивов предназначена команда []
Procedure OnCreate; var A : Array Of String; I : Integer; Begin A := ['10','20','30','40','50']; Warning('1) '+A[2]); // 1) 30 Warning('2) '+['10','20','30','40','50'][2]); // 2) 30 I := ['10','20','30','40','50'].Find('40'); Warning('3) '+IntToStr(I)); // 3) 3 End;
При описании массива допускается использование арифметических выражений
Procedure OnCreate; var X : Float; A : Array Of Float; Begin X := 0.34; A := [X, X+2, X*X, Sin(X)]; End;
Копирование массивов в переменные типа Array и Variant
Все массивы можно скопировать в переменные типа Array или Variant. При этом создается копия массива, изменение которой не влияет на исходный массив.
Procedure OnCreate; Var A : Array Of Variant; B : Array Of Integer; C : Array Of String; V : Array; Begin A := [12,'A',-0.12]; V := A; Warning(ToStr(V)); // 12,A,-0.12 B := [10,20,30]; V := B; Warning(ToStr(V)); // 10,20,30 C := ['Привет','мир']; V := C; Warning(ToStr(V)); // Привет,мир End;
Это преобразование может использоваться для передачи произвольного массива в процедуру.
Procedure OnCreate; Var A : Array Of Variant; B : Array Of Integer; C : Array Of String; Begin A := [12,'A',-0.12]; Print(A); // 12,A,-0.12 B := [10,20,30]; Print(B); // 10,20,30 C := ['Привет','мир']; Print(C); // Привет,мир End; Procedure Print(A : Array); Begin Warning(ToStr(A)); End;
Так же любой массив можно скопировать в переменную типа Variant.
Это преобразование так же можно использовать для передачи произвольного массива в процедуру, но при этом, в процедуру можно передать и любое другое значение. Тип данных Variant работает медленее, чем Array.
Procedure OnCreate; Var A : Array Of Variant; B : Array Of Integer; C : Array Of String; V : Variant; Begin A := [12,'A',-0.12]; V := A; Warning(V.Item(1) As String); // A B := [10,20,30]; V := B; Warning(V.Item(1) As String); // 20 C := ['Привет','мир']; V := C; Warning(V.Item(1) As String); // мир End;