Difference between revisions of "Tree.Array"
m (1 revision imported) |
|||
(2 intermediate revisions by 2 users not shown) | |||
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 в нотации массивов. | ||
== Примеры == | == Примеры == |
Latest revision as of 16:44, 6 June 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"]:="Проверка";