Difference between revisions of "Tree.Array"
m (1 revision imported) |
1>Admin |
||
| Line 18: | Line 18: | ||
== Синтаксис == | == Синтаксис == | ||
<code> | <code> | ||
| − | {{Grey|Tree}}'''[<Индекс или наименование значения подчиненной ветки (INT,STRING)>]''':''<Значение>'' | + | {{Grey|Tree}}'''[<Индекс или наименование значения подчиненной ветки (INT,STRING)>{{Optional|,...}}]''':''<Значение или ветка>'' |
</code> | </code> | ||
==== Аргументы ==== | ==== Аргументы ==== | ||
| − | * <code>''<Индекс или наименование значения подчиненной ветки (INT,STRING)>''</code> - Индекс получаемого или устанавливаемого значения подчиненной ветки дерева, может иметь следующие типы: | + | * <code>''<Индекс или наименование значения подчиненной ветки (INT,STRING)>''</code> - Индекс получаемого или устанавливаемого значения подчиненной ветки дерева. При указании более одного аргумента, будут последовательно найдены индексы подчиненных веток с первого индекса первого аргумента, до последнего. При чтении, если указанный путь отствует, будет возвращено пустое значение. При записи, если указанный путь отсутствует, он будет создан. Индекс может иметь следующие типы: |
** '''число''': ветка значения будет найдено по ее числовому индексу (начиная с индекса 1). При получении значения будет выполнена операция, соответствующая фрагменту <code><Дерево>.Get(<Индекс>)</code> или <code><Дерево>.ByIndex(<Индекс>)</code> (в зависимости от наличия следующего аргумента), при установке значения, операция, соответствующая фрагменту <code><Дерево>.Set(<Индекс>,<Значение>)</code>. | ** '''число''': ветка значения будет найдено по ее числовому индексу (начиная с индекса 1). При получении значения будет выполнена операция, соответствующая фрагменту <code><Дерево>.Get(<Индекс>)</code> или <code><Дерево>.ByIndex(<Индекс>)</code> (в зависимости от наличия следующего аргумента), при установке значения, операция, соответствующая фрагменту <code><Дерево>.Set(<Индекс>,<Значение>)</code>. | ||
** '''строка''': ветка значения будет найдено по ее наименованию. При получении значения будет выполнена операция, соответствующая фрагменту <code><Дерево>.GetByName(<Наименование>)</code> или <code><Дерево>.FindByName(<Наименование>)</code> (в зависимости от наличия следующего аргумента), при установке значения, операция, соответствующая фрагменту <code><Дерево>.SetByName(<Наименование>,<Значение>)</code>. Если наименование значение не найдено, будет возвращено или добавлено пустое значение. | ** '''строка''': ветка значения будет найдено по ее наименованию. При получении значения будет выполнена операция, соответствующая фрагменту <code><Дерево>.GetByName(<Наименование>)</code> или <code><Дерево>.FindByName(<Наименование>)</code> (в зависимости от наличия следующего аргумента), при установке значения, операция, соответствующая фрагменту <code><Дерево>.SetByName(<Наименование>,<Значение>)</code>. Если наименование значение не найдено, будет возвращено или добавлено пустое значение. | ||
| + | |||
| + | ==== Возвращаемое значение ==== | ||
| + | Атрибут возвращает значение ветки, если оно не пустое (OT_NOTHING) или подчиненные ветки отствуют. Атрибут возвращает объект ветки, если ее значение пустое (OT_NOTHING) и имеются подчиненные ветки. Такой подход позволяет работать с объектом дерева, как с XML в нотации массивов. | ||
== Примеры == | == Примеры == | ||
Revision as of 11:53, 21 May 2022
| [<Индекс значения (INT,STRING)>] (Получение или установка значения ветки) | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||
Применимо к объектам ветки и дерева. Использование синтаксиса массивов позволяет получить или изменить значение подчиненной ветки дерева по его индексу (аргументом является число), либо наименованию (аргументом является строка). Для дерева, фрагмент <Дерево>[<Аргумент 1>,<Аргумент 2>,...] не равнозначен фрагменту <Дерево>[<Аргумент 1>][<Аргумент 2>,...], так как в первом случае первый аргумент будет использован для нахождения ветки, а не значения, а второй для нахождения значения внутри этой ветки (<Дерево>.ByIndex(<Аргумент 1>).Get(<Аргумент 2>)...), а во втором случае, аргумент используется для нахождения значения и дальнейшие аргументы будут применены к объекту, полученному из таблицы (<Дерево>.Get(<Аргумент 1>)...).
Синтаксис
Tree[<Индекс или наименование значения подчиненной ветки (INT,STRING)>,...]:<Значение или ветка>
Аргументы
<Индекс или наименование значения подчиненной ветки (INT,STRING)>- Индекс получаемого или устанавливаемого значения подчиненной ветки дерева. При указании более одного аргумента, будут последовательно найдены индексы подчиненных веток с первого индекса первого аргумента, до последнего. При чтении, если указанный путь отствует, будет возвращено пустое значение. При записи, если указанный путь отсутствует, он будет создан. Индекс может иметь следующие типы:- число: ветка значения будет найдено по ее числовому индексу (начиная с индекса 1). При получении значения будет выполнена операция, соответствующая фрагменту
<Дерево>.Get(<Индекс>)или<Дерево>.ByIndex(<Индекс>)(в зависимости от наличия следующего аргумента), при установке значения, операция, соответствующая фрагменту<Дерево>.Set(<Индекс>,<Значение>). - строка: ветка значения будет найдено по ее наименованию. При получении значения будет выполнена операция, соответствующая фрагменту
<Дерево>.GetByName(<Наименование>)или<Дерево>.FindByName(<Наименование>)(в зависимости от наличия следующего аргумента), при установке значения, операция, соответствующая фрагменту<Дерево>.SetByName(<Наименование>,<Значение>). Если наименование значение не найдено, будет возвращено или добавлено пустое значение.
- число: ветка значения будет найдено по ее числовому индексу (начиная с индекса 1). При получении значения будет выполнена операция, соответствующая фрагменту
Возвращаемое значение
Атрибут возвращает значение ветки, если оно не пустое (OT_NOTHING) или подчиненные ветки отствуют. Атрибут возвращает объект ветки, если ее значение пустое (OT_NOTHING) и имеются подчиненные ветки. Такой подход позволяет работать с объектом дерева, как с XML в нотации массивов.
Примеры
aTree:=Tree.Create();
aTree.Add(List.Create(132),"Ветка 1").Add(2,"Ветка 1.1");
aTree.Add(3,"Ветка 2");
//Будет выведено 2, соответствует операции aTree.ByIndex(1).Get(1)
Message("Значение ветки 1.1: "+aTree[1,1]);
//Будет выведено 132, соответствует операции aTree.Get(1).Get(1)
Message("Значение списка: "+aTree[1][1]);
//Ветка получит новое значение "Проверка" (предыдущее было 3), соответствует операции aTree.SetByName("Ветка 2","Проверка")
aTree["Ветка 2"]:="Проверка";