Вверх ↑
Ответов: 10
Рейтинг: 0
#1: 2020-12-08 07:05:06 ЛС | профиль | цитата
Netspirit, логика работы компонента hiArrayFind.pas изменилась в сравнении с основной версией Hiasm. В списке строк вида "Цифры;Какой-то текст" при поиске с частичным совпадением "92521;" теперь находятся строки "10191", "10192" и т.д.
Сравнил версии компонента.
старая (работает как я ожидаю):
77.   if _prop_Partial and (Pos(S1, S2) <> 0) then

новая (находит то, что мне не нужно):
77.   if _prop_Partial and (Pos(S1^, string(S2)) <> 0) then

Если убрать ^ - возвращается старое поведение.
Вопрос - что меняет этот символ в работе компонента? Это новая логика работы или ошибка?

Схема для проверки (каждое нажатие FindNext ищет следующую "подходящую" строку):
Add(StrList,14592800,406,70)
{
Strings=#16:10056;НЕ находит|13:10191;Находит|13:10192;Находит|16:10363;НЕ находит|16:10581;НЕ находит|19:92521;Нужная строка|
}
Add(ArrayEnum,4774859,420,126)
{
link(onItem,1505494:doAdd,[])
link(Array,14592800:Array,[])
}
Add(Button,10040569,364,126)
{
Left=15
Top=10
Caption="Load"
Flat=0
link(onClick,4774859:doEnum,[])
}
Add(StringTable,1505494,567,126)
{
Left=15
Top=40
Width=305
Height=220
Columns=#5:Числа|5:Текст|
ColumnClick=1
Point(Strings)
Point(doSelect)
Point(onColumnClick)
Point(doSortDigit)
Point(doEnsureVisible)
link(onClick,6145534:doWork1,[(611,132)(611,117)(470,117)])
link(onColumnClick,1505494:doSortDigit,[(610,139)(610,193)(542,193)(542,160)])
}
Add(Edit,9366271,700,126)
{
Left=75
Top=10
Width=185
WinStyle=2
Text="92521;"
}
Add(Button,9582991,427,238)
{
Left=265
Top=10
Caption="Find Next"
Flat=0
link(onClick,9905309:doData,[])
}
Add(ArrayFind,5092659,581,238)
{
Partial=0
link(onFind,9326268:doEvent1,[])
link(Array,1505494:Strings,[])
link(Value,9366271:Text,[(601,223)(706,223)])
}
Add(Memory,5186600,483,168)
{
Default=Integer(0)
}
Add(DoData,9905309,483,238)
{
link(onEventData,5092659:doFind,[])
link(Data,5186600:Value,[])
}
Add(Hub,9326268,630,238)
{
OutCount=3
link(onEvent1,1505494:doSelect,[(659,244)(659,203)(530,203)(530,153)])
link(onEvent2,1505494:doEnsureVisible,[(668,251)(668,184)(551,184)(551,167)])
link(onEvent3,5716089:doCase,[])
}
Add(Case,5716089,672,252)
{
Value=Integer(-1)
DataOnTrue=Integer(0)
link(onNextCase,11905089:doCalc,[])
link(onTrue,4428785:doWork3,[(779,265)])
}
Add(HubEx,4428785,775,252)
{
Angle=3
link(onEvent,6145534:doWork3,[(779,213)(470,213)])
}
Add(FastMathParse,11905089,728,252)
{
DataCount=1
MathStr="%1 + 1"
ResultType=0
link(onResult,4428785:doWork2,[])
}
Add(HubEx,6145534,466,168)
{
link(onEvent,5186600:doValue,[])
}


--
С уважением
карма: 0

0
Редактировалось 4 раз(а), последний 2020-12-08 07:58:00