Вверх ↑
Этот топик читают: Гость
Ответов: 36
Рейтинг: 0
#1: 2019-06-13 21:02:51 ЛС | профиль | цитата
Если одинаковые теги, MultiBlockFind бесполезен?

Add(MainForm,2953706,483,63)
{
}
Add(MultiBlockFind,8557990,574,119)
{
Count=4
TagList="{**s}‹title›{**x}‹/title›{**e}\r\n{**s}‹div class="name"›{**x}‹/div›{**e}\r\n{**s}‹div class="name"›{**x}‹/div›{**e}\r\n{**s}‹div class="name"›{**x}‹/div›{**e}\r\n"
link(Text,9170243:Text,[])
link(onResult1,3571795:doWork2,[])
link(onResult2,8316855:doWork2,[])
link(onResult3,16575869:doWork2,[])
link(onResult4,16575869:doWork3,[(704,146)])
}
Add(Button,15526721,490,119)
{
Left=175
Top=150
Align=2
link(onClick,8557990:doMultiBlockFind,[])
}
Add(StrList,9170243,574,56)
{
Strings=#126:‹title›Майкл Джон Гаррисон‹/title› ‹div class="name"›Пустота‹/div› ‹div class="name"›Свет‹/div› ‹div class="name"›Нова ‹/div› |0:|
}
Add(Memo,16294008,728,119)
{
Left=270
Top=160
Align=5
}
Add(HubEx,3571795,714,119)
{
link(onEvent,16294008:doAdd,[])
}
Add(HubEx,8316855,707,126)
{
link(onEvent,3571795:doWork3,[(718,132)])
}
Add(HubEx,16575869,700,133)
{
link(onEvent,8316855:doWork3,[(711,139)])
}

карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 8338
Рейтинг: 775
#2: 2019-06-13 22:06:29 ЛС | профиль | цитата
Vandjer,
одинаковые блоки--один


Add(MainForm,15695928,287,77)
{
}
Add(MultiBlockFind,8557990,378,133)
{
TagList="{**s}‹title›{**x}‹/title›{**e}\r\n{**s}‹div class="name"›{**x}‹/div›{**e}\r\n"
link(onResult,1521855:doStr,[])
link(Text,9170243:Text,[])
}
Add(Button,15526721,294,133)
{
Width=384
Align=2
link(onClick,8557990:doMultiBlockFind,[])
}
Add(StrList,9170243,378,70)
{
Strings=#126:‹title›Майкл Джон Гаррисон‹/title› ‹div class="name"›Пустота‹/div› ‹div class="name"›Свет‹/div› ‹div class="name"›Нова ‹/div› |0:|
}
Add(Memo,16294008,294,175)
{
Top=25
Width=60
}
Add(MT_String,1521855,434,133)
{
link(onResult,11879808:doAdd,[])
}
Add(StringTable,11879808,490,133)
{
Left=65
Top=20
Width=315
Height=200
Columns=#7:ФИО=120|8:Блок1=70|8:Блок2=70|8:Блок3=70|
Grid=0
}

карма: 14

0
Ответов: 36
Рейтинг: 0
#3: 2019-06-13 22:50:39 ЛС | профиль | цитата
Леонид писал(а):
одинаковые блоки--один

Жаль. Чем лучше реализовать тогда такое?

‹title›Автор1‹/title› ‹div class="name"›1‹/div› ‹div class="name"›2‹/div› ‹div class="name"›3‹/div› ‹div class="name"›4‹/div› 
‹title›Автор2‹/title› ‹div class="name"›1‹/div› ‹div class="name"›2‹/div› ‹div class="name"›3‹/div› ‹div class="name"›4‹/div›
Чтоб получить на выходе по три книги

Автор1
1
2
3
Автор2
1
2
3
карма: 0

0
Ответов: 8338
Рейтинг: 775
#4: 2019-06-13 23:04:17 ЛС | профиль | цитата
Vandjer,


Add(MainForm,15695928,294,175)
{
}
Add(MultiBlockFind,8557990,399,231)
{
TagList="{**s}‹title›{**x}‹/title›{**e}\r\n{**s}‹div class="name"›{**x}‹/div›{**e}\r\n"
link(onResult,1521855:doStr,[])
}
Add(Button,15526721,301,231)
{
Width=384
Align=2
link(onClick,12905377:doEnum,[])
}
Add(StrList,9170243,343,168)
{
Strings=#126:‹title›Майкл Джон Гаррисон‹/title› ‹div class="name"›Пустота‹/div› ‹div class="name"›Свет‹/div› ‹div class="name"›Нова ‹/div› |126:‹title›Автор1‹/title› ‹div class="name"›1‹/div› ‹div class="name"›2‹/div› ‹div class="name"›3‹/div› ‹div class="name"›4‹/div› |125:‹title›Автор2‹/title› ‹div class="name"›1‹/div› ‹div class="name"›2‹/div› ‹div class="name"›3‹/div› ‹div class="name"›4‹/div›|0:|
}
Add(Memo,16294008,546,231)
{
Left=70
Top=25
Width=230
Height=230
ScrollBars=2
}
Add(MT_String,1521855,448,231)
{
link(onResult,456250:doEnum,[])
}
Add(ArrayEnum,12905377,357,231)
{
link(onItem,8557990:doMultiBlockFind,[])
link(Array,9170243:Array,[])
}
Add(Str_Enum,456250,497,231)
{
link(onEnum,16294008:doAdd,[])
}

карма: 14

0
Ответов: 36
Рейтинг: 0
#5: 2019-06-13 23:13:32 ЛС | профиль | цитата
Леонид
У меня выскакивает ошибка, что в первом, что во втором варианте
Error[0]: Точка входа onResult элемента MultiBlockFind не найдена
Как это исправить?

Редактировалось 1 раз(а), последний 2019-06-13 23:55:49
карма: 0

0
Ответов: 8338
Рейтинг: 775
#6: 2019-06-14 00:44:29 ЛС | профиль | цитата
Vandjer, обновите элемент MultiBlockFind щёлкнув по нему ПКМ на панели компонентов "Строки"-- см картинку
Обновлене.jpg
Если не получится, обновите на сайте http://svn.hiasm.com/packs/delphi/ в ручную, скачав эти файлы в отдельную папку и оттуда перетащите MultiBlockFind.ini на поле HiAsm
code/ hiMultiBlockFind
conf/ MultiBlockFind.ini
icon/ MultiBlockFind.ico
карма: 14

0
Разработчик
Ответов: 25460
Рейтинг: 2070
#7: 2019-06-14 10:21:14 ЛС | профиль | цитата
Леонид писал(а):
обновите элемент MultiBlockFind

Этот компонент никогда не имел отдельной точки onResult. Все onResul-ты должны быть пронумерованы (onResult1, onResult2... onResultN).

--- Добавлено в 2019-06-14 10:34:51

Вот схема от Леонида на компоненте, который действительно находится на SVN. Выходных точек Result должно быть ровно столько, сколько блоков поиска {**s}...{**e}

Схема

Add(MainForm,15695928,238,182)
{
}
Add(MultiBlockFind,8557990,350,238)
{
Count=2
TagList="{**s}‹title›{**x}‹/title›{**e}\r\n{**s}‹div class="name"›{**x}‹/div›{**e}\r\n"
link(onResult1,15456519:doWork1,[(389,244)(389,237)(515,237)])
link(onResult2,1521855:doStr,[])
}
Add(Button,15526721,238,238)
{
Width=384
Align=2
link(onClick,12905377:doEnum,[])
}
Add(StrList,9170243,287,182)
{
Strings=#126:‹title›Майкл Джон Гаррисон‹/title› ‹div class="name"›Пустота‹/div› ‹div class="name"›Свет‹/div› ‹div class="name"›Нова ‹/div› |126:‹title›Автор1‹/title› ‹div class="name"›1‹/div› ‹div class="name"›2‹/div› ‹div class="name"›3‹/div› ‹div class="name"›4‹/div› |125:‹title›Автор2‹/title› ‹div class="name"›1‹/div› ‹div class="name"›2‹/div› ‹div class="name"›3‹/div› ‹div class="name"›4‹/div›|0:|
}
Add(Memo,16294008,532,245)
{
Left=70
Top=25
Width=230
Height=230
ScrollBars=2
}
Add(MT_String,1521855,413,245)
{
link(onResult,456250:doEnum,[])
}
Add(ArrayEnum,12905377,301,238)
{
link(onItem,8557990:doMultiBlockFind,[])
link(Array,9170243:Array,[])
}
Add(Str_Enum,456250,462,245)
{
link(onEnum,15456519:doWork2,[])
}
Add(HubEx,15456519,511,245)
{
link(onEvent,16294008:doAdd,[])
}

Кстати, а куда пропало все остальное из HTML кода, тот же тег html?

Редактировалось 2 раз(а), последний 2019-06-14 10:41:43
карма: 19

0
Ответов: 36
Рейтинг: 0
#8: 2019-06-14 12:23:01 ЛС | профиль | цитата
Леонид писал(а):
Если не получится, обновите на сайте http://svn.hiasm.com/packs/delphi/ в ручную, скачав эти файлы в отдельную папку и оттуда перетащите MultiBlockFind.ini на поле HiAsm
code/ hiMultiBlockFind
conf/ MultiBlockFind.ini
icon/ MultiBlockFind.ico

Обновлял и переустанавливал, ничего не помогло.
nesco писал(а):
Вот схема от Леонида на компоненте, который действительно находится на SVN. Выходных точек Result должно быть ровно столько, сколько блоков поиска {**s}...{**e}


|Леонид, nesco, Спасибо за помощ, немного додделал под свои нужды, все работает!
карма: 0

0
Ответов: 8338
Рейтинг: 775
#9: 2019-06-14 12:29:50 ЛС | профиль | цитата
Леонид писал(а):
Выходных точек Result должно быть ровно столько, сколько блоков поиска {**s}...{**e}

Строчек две, а точка одна (Педалей три, а ножек две!)
ОдинOnResult.jpg
Ничего шаловливыми ручками не трогал, ей-богу
карма: 14

0
Разработчик
Ответов: 25460
Рейтинг: 2070
#10: 2019-06-14 13:37:47 ЛС | профиль | цитата
Леонид писал(а):
Строчек две, а точка одна (Педалей три, а ножек две!)

Это не мой компонент, я не знаю, откуда ты его взял. Изначально он разрабатывался мною именно под N-е количество блоков {**s}...{**e}, и точек должно было быть столько, сколько этих самых блоков, а MT-поток появлялся на точке только тогда, когда вложений в блоке было несколько. Явной точки onResult в моем компоненте не было никогда.

Редактировалось 1 раз(а), последний 2019-06-14 13:39:35
карма: 19

0
Ответов: 8338
Рейтинг: 775
#11: 2019-06-14 15:33:09 ЛС | профиль | цитата
nesco писал(а):
Это не мой компонент

Что написано пером

[About]
Version=2.00
Author=nesco

[Type]
Class=Element
Info=Множественный цепочный поиск
Tab=Strings

[Property]
+@TagList=Список маркеров поиска по умолчанию|2|
Direct=Направление перебора цепей маркерных блоков в списке|4|0|StratToEnd, EndToStart
Mode=Режим выдачи событий|4|0|SolidMT,IdxChainMT

[Methods]
doMultiBlockFind%Mode%=Начинает множественнай поиск текстовых блоков ARG(Text, TagList)|1|
onResult=Событие происходит всякий раз после окончания множественной поиска, выдавая полученный результат в поток ARG(FindText[0]..FindText[N])|2|
*onEnd=Событие происходит всякий раз после окончания перебора всего списка маркеров поиска|2|
Text=Текст для множественной поиска текстовых блоков|4|2

Редактировалось 1 раз(а), последний 2019-06-14 15:33:41
карма: 14

0
Разработчик
Ответов: 25460
Рейтинг: 2070
#12: 2019-06-14 16:00:02 ЛС | профиль | цитата
Леонид писал(а):
Что написано пером

У нас тут таких компонентов прорва, где написан один автор, а правили уже кому не лень

--- Добавлено в 2019-06-14 16:12:43

Сравнил сейчас на SVN все копии с момента выхода компонента, такого как у тебя не было от слова "совсем". Те на SVN я никогда не выкладывал версию, которая сейчас стоит у тебя.

--- Добавлено в 2019-06-14 16:25:27

Я нашел откуда растут ноги. Леонид, у тебя не официальный компонент, у тебя прототип, который я сделал одним из первых. Потом всего еще куча была перед добавлением на SVN. Вот эта тема -- http://forum.hiasm.com/topic/57347/0#p198393

Редактировалось 3 раз(а), последний 2019-06-14 16:26:33
карма: 19

0
Ответов: 8338
Рейтинг: 775
#13: 2019-06-15 10:37:15 ЛС | профиль | цитата
nesco, значит таки пером-то правильно (Один выход ближе к концепции HiAsm, чем множество )
карма: 14

0
Разработчик
Ответов: 25460
Рейтинг: 2070
#14: 2019-06-15 12:11:05 ЛС | профиль | цитата
Леонид писал(а):
Один выход ближе к концепции HiAsm, чем множество

Если бы в цепочках данных не было вложенностей, принадлежащих конкретному блоку поиска, то да. Вот как разделить один MT-поток на части, если, к примеру, первый блок выдал пять вложенностей, второй шесть, а третий один, а мы этого изначально не знаем. Да если бы и знали, то парсер такого MT нивелировал бы все преимущества компонента. Именно потому, что могут быть конкретные вложенности в цепочке данных, я и пошел по пути разделения блоков поиска по точкам.

Редактировалось 3 раз(а), последний 2019-06-15 12:16:56
карма: 19

0
Ответов: 1370
Рейтинг: 85
#15: 2019-06-15 16:52:19 ЛС | профиль | цитата
Разный подход к сути дела и боюсь, что в понимании.
Я наблюдал, как этот компонент делался. После обновления - ... не в красную армию. Соединял я кучу выходов в одну точку, ну я вам доложу... Удалил!
... Короче, точка зрения Леонид`а логична, даже не с точки зрения концепции HiAsm, а с точки зрения логики. + удобства. Так нормальныё люди мыслят. Пусть они не далёкие, как я, но крайне вредно ломать общие понятия под изуитские правила.
MT-потоки здесь вовсе не причём. Убрать их и сделать в dll! - я утрирую.
Главное не как удобно построить компонент и в концепцию ложится-ли, а чтобы приятно было пользоваться.
По большому счёту все эти понятия "MT-потоки" не должны присутствовать в поле видимости пользователя.

Такое впечатление, что за лесом кубиков и правил - логики не видно.
БлюПупами https://habr.com/ru/post/344446/ (В качестве картинки - там высокоуровневые сопли) Вы пользовались?
И что скажете?
Ведь в голову никому не пришло циклы в виде кубиков изобразить.
И IC не самое удачное решение. Простое, но не удачное, как пластырь в пробоине.
Но об этом потом.

В спешке и запале.
Но это нормально!

Возможно нужны два разных компонента.

Редактировалось 10 раз(а), последний 2019-06-15 19:01:58
карма: 4

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