Содержание
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);
}
|
справка