Содержание
Object.Item(Name : String) =
Object.Item(N : Integer) =
Object[N : Integer] =
Доступ к элементам по номеру или имени
Свойство Item позволяет получать или изменить любой элемент по номеру или имени. Для получения элемента по номеру можно использовать оператор [].
Procedure OnCreate; Var M : Record; Begin M.Item('A') := 1; M.Item('B') := 2; M.Item('C') := 3; // Но M.Item('ItemsCount') работать не будет Warning('Count = ' + M.ItemCount As String); Warning(M.Item('A') As String); Warning(M.Item('B') As String); Warning(M.Item('C') As String); // Доступ по номеру Warning(M.Item(1) As String); // Аналогично вызову M.Item(1) Warning(M[1] As String); // Поддерживается ForEach Foreach X In M Do Warning(X As String); End; |
void OnCreate() { Record M; M.Item("A") = "1"; M.Item("B") = "2"; M.Item("C") = "3"; // Но M.Item('ItemsCount') работать не будет Warning("Count = " + (string)M.ItemCount); Warning((string)M.Item("A")); Warning((string)M.Item("B")); Warning((string)M.Item("C")); // Доступ по номеру Warning((string)M.Item(1)); // Аналогично вызову M.Item(1) Warning((string)M[1]); // Поддерживается ForEach foreach(X In M) Warning((string)X); } |
Аналогичного результата можно добиться обычным способом. Но при этом невозможен доступ к элементам: без имени, содержащим недопустимые в языке программирования символы (например пробелы), с именами совпадающими со стандартными методами (например Item).
Procedure OnCreate; Var M : Record; Begin M.A := 1; M.B := 2; M.C := 3; Warning('Count = ' + M.ItemCount As String); Warning(M.A As String); Warning(M.B As String); Warning(M.C As String); End; |
void OnCreate() { Record M; M.A = "1"; M.B = "2"; M.C = "3"; Warning("Count = " + (string)M.ItemCount); Warning((string)M.A); Warning((string)M.B); Warning((string)M.C); } |
При использовании статических записей элементы будут иметь определенный тип, а не Variant. То есть работает контроль типов. Изменять тип элементов и добавлять новые в этом случае не допускается.
Type MyRecord = Record A, B : String; End; Procedure OnCreate; Var M : MyRecord; Begin M.A := 'Hello'; M.B := 'World'; // Недопустимо M.B := 2; // Недопустимо M.C := 2; Warning('Count = ' + M.ItemCount As String); Warning(M.A); Warning(M.B); // Доступ по номеру Warning(M.Item(1) As String); // Аналогично вызову M.Item(1) Warning(M[1] As String); // Поддерживается ForEach Foreach X In M Do Warning(X As String); End; |
struct MyRecord { string A, B; }; void OnCreate() { MyRecord M; M.A = "Hello"; M.B = "World"; // Недопустимо M.B = 2; // Недопустимо M.C = 2; Warning("Count = " + (string)M.ItemCount); Warning(M.A); Warning(M.B); // Доступ по номеру Warning((string)M.Item(1)); // Аналогично вызову M.Item(1) Warning((string)M[1]); // Поддерживается ForEach Foreach(X In M) Warning((string)X); } |