Вверх ↑
Этот топик читают: Гость
Ответов: 245
Рейтинг: 4
#1: 2022-05-16 12:55:21 ЛС | профиль | цитата
nesco опять к тебе на поклон,
добавить точку останова к элементу TVT_EnumNodes, помню
nesco писал(а):
Все, это последнее, что я буду тут добавлять, остальное только за донат, тк это не ошибки элемента, а расширение функционала.

пиши в лику

Add(TVT_EnumNodes,11356888,10,10)
{
}


Редактировалось 2 раз(а), последний 2022-05-16 12:56:40
карма: 1

0
vip
#1.1контекстная реклама от партнеров
Разработчик
Ответов: 26066
Рейтинг: 2120
#2: 2022-05-17 03:25:46 ЛС | профиль | цитата
ric писал(а):
добавить точку останова к элементу TVT_EnumNodes

Зачем? Давай пример, где эта точка крайне необходима. Почему нельзя считать все в буфер, потом выбрать то, что тебе надо. Или у тебя там тысячи записей?

Редактировалось 1 раз(а), последний 2022-05-17 03:29:09
карма: 22

0
Ответов: 245
Рейтинг: 4
#3: 2022-05-17 11:34:47 ЛС | профиль | цитата
пока записей 1119, а остановка нужна чтоб не перебирало до конца если были взяты несколько веток из произвольного места дерева, или есть другие способы взять данные не перебирая.
карма: 1

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#4: 2022-05-17 14:20:24 ЛС | профиль | цитата
ric писал(а):
пока записей 1119, а остановка нужна чтоб не перебирало до конца если были взяты несколько веток из произвольного места дерева, или есть другие способы взять данные не перебирая.

Нужен пример для отладки с большим количеством веток, можно реальный. У меня на ум такой пример не приходит. Там еще должно быть условие остановки перебора, те нашлось нужное, остановили перебор. А как ты собрался отрабатывать перебор в нескольких ветках одновременно, использовать мультипоточность? Кстати, остановку уже и сейчас можно так сделать, если перебор осуществлять в динамическом мультике, который необходим и в мультипотоке.

Редактировалось 3 раз(а), последний 2022-05-17 14:26:05
карма: 22

0
Ответов: 245
Рейтинг: 4
#5: 2022-05-17 16:51:17 ЛС | профиль | цитата
Нет в мультипотоке не перебирается, обычный перебор всех веток, и выдает то что отмечено чек боксами из дерева.
попытка остановить в динамическом мультике выдает это
111.jpg
карма: 1

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#6: 2022-05-17 18:16:15 ЛС | профиль | цитата
ric писал(а):
Нет в мультипотоке не перебирается, обычный перебор всех веток, и выдает то что отмечено чек боксами из дерева.
попытка остановить в динамическом мультике выдает это

Перед удалением мультика поставь вот это
Add(DeferredEvent,7720301,238,245)
{
}
Это давно уже известная проблема -- попытка удаления самого себя в одной очереди событий.

--- Добавлено в 2022-05-17 18:19:11

Попробуй нарисовать пример и в нем уточнить по каким условиям необходимо остановить перебор.

Редактировалось 3 раз(а), последний 2022-05-17 18:20:21
карма: 22

0
Ответов: 245
Рейтинг: 4
#7: 2022-05-17 19:18:38 ЛС | профиль | цитата
отложенное событие вызывает другую ошибку
112.jpg
хрен с ним сделал так, получил то что надо, отрезал поток не дожидаясь завершения на точке onStop запускается в новом потоке дальше пойдет и так.

Add(MT_IndexToChanel,11169305,511,455)
{
Point(Index)
link(Index,3465739:State,[])
}
Add(Switch,3465739,511,406)
{
DataOn=Integer(0)
DataOff=Integer(1)
Point(State)
Point(doOn)
Point(onOff)
link(onOff,16610096:doStart,[])
}
Add(Thread,16610096,567,413)
{
Delay=0
FastStop=0
}
Add(TVT_EnumNodes,11187227,455,455)
{
TreeView="333"
link(onEnum,11169305:doEvent,[])
}

карма: 1

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#8: 2022-05-17 21:23:47 ЛС | профиль | цитата
Оставь пока "как есть", а я еще подумаю.

--- Добавлено в 2022-05-17 21:29:54

ric писал(а):
обычный перебор всех веток, и выдает то что отмечено чек боксами из дерева

Правда я вот тут немного не понял -- зачем тут остановка по требованию? Тут просто загрузил все дерево в буфер и отобрал пункты с активными чекбоксами. КМК, остановка по требованию нужна при поиске нужного пункта, к примеру, по имени, чтобы дальше не читать дерево, если нашлось.

Редактировалось 2 раз(а), последний 2022-05-17 21:33:28
карма: 22

0
Ответов: 245
Рейтинг: 4
#9: 2022-05-17 21:59:54 ЛС | профиль | цитата
Данные которые отмечены загружаются из сети, бывает надо прервать загрузку а из дерева все летят новые данные, не хотелось лепить еще доп компоненты, выгружать потом читать, загружать. сейчас в список выгружаются потом перебираются ArrayEnum и далее.
карма: 1

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#10: 2022-05-17 23:23:54 ЛС | профиль | цитата
ric писал(а):
бывает надо прервать загрузку а из дерева все летят новые данные

Аааа, вон оно че. Понятно теперь.
карма: 22

0
Ответов: 2200
Рейтинг: 673
#11: 2022-05-17 23:25:54 ЛС | профиль | цитата
Как вариант: Архив с правками файлов и тестовым примером
Добавил еще свойство onBreakEnable и событие onBreak

Редактировалось 2 раз(а), последний 2022-05-17 23:43:13
карма: 11

0
Ответов: 2059
Рейтинг: 131
#12: 2022-05-18 00:56:33 ЛС | профиль | цитата
А не легче ли сделать запрос к базе, чем делать перебор?
Вот у меня есть такое дерево https://disk.yandex.ru/d/f8_KsC6hsmRuHw здесь сильно уменьшено, чтобы меньше качать. На самом деле в дереве 126 тысяч ветвей и листов.
Так выборка из базы (на схеме не показана) делается на порядки быстрее, чем перебор по дереву.

Редактировалось 2 раз(а), последний 2022-05-18 00:59:01
карма: 6

0
Ответов: 245
Рейтинг: 4
#13: 2022-05-18 02:47:25 ЛС | профиль | цитата
sla8a писал(а):
Как вариант: Архив с правками файлов и тестовым примером
Добавил еще свойство onBreakEnable и событие onBreak

Во красота, можно выкинуть лишнюю кучу компонентов благодарствую
получился тот же ArrayEnum осталось заменить в TVT_EnumNodes.ini (onItem на onEnum) и nesco после одобрения обновить на SVN может еще кому пригодится.
flint2 писал(а):
А не легче ли сделать запрос к базе, чем делать перебор?

Может быть и да, но я не разбираюсь в sqlite, почитаю потом что к чему попробую а пока так.
благодарю за помощь
карма: 1

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#14: 2022-05-18 04:17:45 ЛС | профиль | цитата
Добавил на SVN
карма: 22

0
14
Сообщение
...
Прикрепленные файлы
(файлы не залиты)