Вверх ↑
Этот топик читают: Гость
Гость
Ответов: 17029
Рейтинг: 0
#1: 2008-06-11 02:55:47 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-03 05:19:02
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#2: 2008-06-11 03:30:36 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-03 05:19:02
карма: 0

0
Главный модератор
Ответов: 2997
Рейтинг: 395
#3: 2008-06-11 11:25:22 ЛС | профиль | цитата
Zidan писал(а):
чтоб неподвис


code_9263.txt
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
файлы: 1code_9263.txt [609B] [262]
Администрация
Ответов: 15295
Рейтинг: 1519
#4: 2008-06-11 11:40:19 ЛС | профиль | цитата
лучше всего через БД
карма: 26
0
Гость
Ответов: 17029
Рейтинг: 0
#5: 2008-06-11 14:03:41 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-03 05:19:03
карма: 0

0
Разработчик
Ответов: 26073
Рейтинг: 2122
#6: 2008-06-11 14:27:12 ЛС | профиль | цитата
Вот, попробуй на расширенной таблице, быстрее будет работать только база, и то -- не факт...
карма: 22

0
Ответов: 2125
Рейтинг: 159
#7: 2008-06-11 14:34:37 ЛС | профиль | цитата
Ускорить поиск в базе данных можно создав индекс по тому полю, по которому ищем.
В памяти тоже можно, для этого надо один раз отсортировать список строк (doSort, займёт какое-то время), а потом искать бинарным поиском, т.е. сокращая диапазон в два раза за один цикл, в зависимости от результата сравнения с элементом, стоящим посередине диапазона. Недостаток - либо каждый раз при добавлении нужно сортировать список, либо вставлять (doInsert) в нужное место, которое ищется аналогично.

В принципе, фича достаточно нужная, можно и компонент доделать. Т.е. после сортировки список остаётся отсортированным, даже если делаются doAdd и doInsert, а поиск делается бинарный. Можно и свойство предусмотреть, чтобы после загрузки doLoad список автоматически сортировался.
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#8: 2008-06-12 00:56:46 ЛС | профиль | цитата
tsdima писал(а):
Т.е. после сортировки список остаётся отсортированным, даже если делаются doAdd и doInsert,
А может лучше иметь сразу свойство SortOn/Off которое будет работать при doAdd,doInsert и doLoad ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26073
Рейтинг: 2122
#9: 2008-06-12 01:13:33 ЛС | профиль | цитата
Блям, блям, а куды девалась моя схема, ее чего, стерли, что ли

------------ Дoбавленo:


Выложу снова, авось пригодится. Добавлен контроль времени. Максимальное время поиска последнего значения (10000)-- чуть больше секунды. Поиск не чувствителен к регистру символов, работает с частью строки и ведет поиск по всем полям таблицы



Add(MainForm,249646,161,140)
{
Left=20
Top=105
Width=597
Height=383
link(onCreate,15760895:doStart,[(198,160)(191,160)])
}
Add(StringTableMT,14756717,413,154)
{
Width=590
Height=300
Columns=#8:Name=300|7:Size=80|7:Dir=200|
IconsCheck=[]
MiscIcons=[]
Icons=[]
Point(doMT_FindText)
Point(onMT_FindText)
link(onMT_FindText,15561516:doValue,[])
}
Add(MT_MultiMem,15561516,469,161)
{
Count=3
link(onData,5243493:doCompare,[(513,167)(513,205)(457,205)(457,244)])
}
Add(Button,12909389,175,238)
{
Left=220
Top=315
Caption="Find"
Data=String(3)
link(onClick,11162438:doStart,[])
}
Add(If_else,5243493,469,238)
{
Type=4
Op2=Integer(0)
link(onTrue,3274970:doCompare,[])
link(Op1,15561516:Value1,[])
}
Add(If_else,3274970,525,238)
{
Type=4
Op2=Integer(0)
link(onTrue,1199000:doText,[])
link(Op1,15561516:Value2,[(531,216)(482,216)])
}
Add(FormatStr,8321706,350,154)
{
Mask="%1 - привет"
link(onFString,14756717:doAdd,[])
}
Add(Edit,1199000,588,238)
{
Left=340
Top=315
Width=165
Text=""
link(onChange,435746:doStop,[(636,244)(636,244)])
link(Str,15561516:Value3,[(594,216)(489,216)])
}
Add(Edit,4432337,301,196)
{
Left=285
Top=315
Text="3"
}
Add(DoData,4090065,301,245)
{
link(onEventData,6980326:doEvent1,[])
link(Data,4432337:Text,[])
}
Add(Thread,11162438,245,238)
{
Delay=0
FastStop=0
link(onSyncExec,4090065:doData,[])
}
Add(For,14408916,294,154)
{
End=10000
link(onEvent,8321706:doString,[])
}
Add(Thread,15760895,224,154)
{
Delay=0
FastStop=0
link(onExec,14408916:doFor,[(275,160)(275,160)])
}
Add(Hub,6980326,350,245)
{
link(onEvent1,435746:doStart,[(412,251)(412,284)(634,284)(634,237)])
link(onEvent2,14756717:doMT_FindText,[(398,258)(398,195)])
}
Add(TimeCounter,435746,651,231)
{
link(onStop,104063:doString,[])
}
Add(FormatStr,104063,700,238)
{
Mask="%1 мсек"
link(onFString,249646:doCaption,[(747,244)(747,114)(149,114)(149,146)])
}

карма: 22

0
Гость
Ответов: 17029
Рейтинг: 0
#10: 2008-06-12 01:56:00 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-03 05:19:03
карма: 0

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