Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26158
Рейтинг: 2127
#31: 2015-03-04 16:23:27 ЛС | профиль | цитата
Tad писал(а):
Где написано ?

Недокументированная возможность. Но запомнить неплохо бы, вдруг пригодится
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#32: 2015-03-04 16:56:21 ЛС | профиль | цитата
И ещё запомнить, что при doText - doClear не надо, а при твоём варианте обязательно.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26158
Рейтинг: 2127
#33: 2015-03-04 22:38:06 ЛС | профиль | цитата
Tad писал(а):
И ещё запомнить, что при doText - doClear не надо, а при твоём варианте обязательно

Но компонент жрет ресурсов больше, чем одна лишняя связь. Или ты об этом не знал
карма: 22

0
Ответов: 186
Рейтинг: 9
#34: 2015-03-05 07:44:32 ЛС | профиль | цитата
Всем привет.
А если немного усложнить задачу.
Найти нужно по части строки.

code_35266.txt
1 вариант ищет все совпадения, но медленнее.
2 вариант ищет 1 совпадение, но быстрей.

В данный момент использую 2 вариант, т.к. нет необходимости искать все, но при поиске в цикле, ищу 2000 строк подряд, выходит долго.
Так что это самое узкое место в моем приложении.

Может есть Варианты ускорения?
карма: 0

0
файлы: 1code_35266.txt [24.2KB] [707]
Ответов: 45
Рейтинг: 4
#35: 2015-03-05 09:32:38 ЛС | профиль | цитата
Chipset писал(а):
Может есть Варианты ускорения?

Третий вариант снизу. Предварительно сохраняет список.
Add(ArrayEnum,10816952,329,140)
{
link(onItem,7251812:doWork2,[])
link(onEndEnum,6294994:doEvent1,[])
link(Array,6260188:Array,[])
}
Add(MainForm,1579138,98,98)
{
Width=655
Height=727
link(onCreate,1565852:doFor,[])
}
Add(StrList,11935250,588,140)
{
FileName="spisok.txt"
Point(doGetString)
Point(onGetString)
}
Add(Edit,5998970,672,70)
{
Left=10
Top=255
Width=430
Text="Муфта стальная 50шт39.252014-06-18 11:43:13"
}
Add(Button,1898356,336,203)
{
Left=10
Top=205
Caption="Search"
Data=Integer(0)
link(onClick,7212239:doEvent1,[])
}
Add(ArrayEnum,3008004,602,224)
{
link(onItem,16076296:doCompare,[])
link(onEndEnum,5311411:doEvent1,[(664,237)(664,265)])
link(Array,13286750:Var2,[])
}
Add(TimeCounter,8663686,448,224)
{
link(onStart,3008004:doEnum,[])
link(onStop,10799305:doText,[(506,237)(506,258)])
}
Add(Label,10799305,532,252)
{
Left=97
Top=207
}
Add(Hub,7212239,413,203)
{
link(onEvent1,5047488:doWork2,[])
link(onEvent2,8663686:doStart,[(437,216)(437,230)])
}
Add(StrMask,16076296,777,224)
{
Point(doMask)
link(onTrue,5588019:doAdd,[])
}
Add(FormatStr,8161445,721,147)
{
DataCount=1
Mask="*%1*"
link(onFString,16076296:doMask,[(765,153)(765,237)])
}
Add(Button,10304679,364,420)
{
Left=10
Top=320
Caption="Search"
Data=Integer(0)
link(onClick,4681328:doEvent1,[])
}
Add(Memo,12998003,924,441)
{
Left=180
Top=295
Width=255
Height=125
ScrollBars=2
}
Add(TimeCounter,3104725,469,434)
{
link(onStart,1124591:doFind,[])
link(onStop,5230228:doText,[(555,447)(555,489)])
}
Add(Label,5230228,609,483)
{
Left=102
Top=327
}
Add(Hub,4681328,420,420)
{
OutCount=4
link(onEvent1,9005067:doWork2,[])
link(onEvent2,12998003:doClear,[(835,433)(835,454)])
link(onEvent3,3104725:doStart,[])
link(onEvent4,3104725:doStop,[])
}
Add(ArrayFind,1124591,637,434)
{
Partial=0
link(onFind,15810251:doCompare,[])
link(Array,7334526:Var2,[])
link(Index,3034059:Value,[])
link(Value,2761752:Var2,[(657,306)(678,306)])
}
Add(GetDataEx,13286750,602,196)
{
link(Data,11935250:Array,[])
}
Add(If_else,15810251,693,434)
{
Op2=Integer(-1)
link(onFalse,14604591:doRead,[])
}
Add(ArrayRW,14604591,770,441)
{
link(onRead,12998003:doAdd,[])
link(Array,7334526:Var3,[(776,397)])
}
Add(GetDataEx,7334526,637,392)
{
link(Data,13286750:Var3,[(643,201)])
}
Add(Memory,3034059,644,336)
{
Default=Integer(0)
}
Add(Memory,16071924,672,147)
{
Point(Data)
link(onData,8161445:doString,[])
link(Data,5998970:Text,[])
}
Add(HubEx,5047488,622,203)
{
Angle=3
link(onEvent,16071924:doValue,[(626,153)])
}
Add(Hub,5311411,693,259)
{
OutCount=3
link(onEvent1,8663686:doStop,[(722,265)(722,303)(436,303)(436,237)])
link(onEvent2,12825736:doData,[(784,272)(784,321)])
link(onEvent3,5588019:doClear,[(796,279)(796,244)])
}
Add(Memo,8927946,945,294)
{
Left=185
Top=10
Width=255
Height=230
ScrollBars=2
}
Add(StrList,5588019,861,231)
{
}
Add(DoData,12825736,861,315)
{
link(onEventData,8927946:doText,[])
link(Data,5588019:Text,[])
}
Add(StrList,1275019,259,35)
{
Strings=#142:900001-651453Панель боковая GRENADA 80шт Панель боковая GRENADA 80шт1695.762014-12-03 09:56:211695.762001.0011150432014-12-03 09:56:21|164:900|1:5|0:|146:56:21|237:900001-651623Подводка гибкая для смесителя 120 см. "Акватехник" пара(кор.+дл. штуцер)пар. Подводка гибкая для смесителя 120 см. "Акватех|0:|6:21106.|5125:56:21|151:900001-651318Муфта гибкий трубоповод Ду 15 ммшт Муфта гибкий трубоповод Ду 15 ммшт95.922014-12-03 09:56:2195.92113.1911149082014-12-03 09:56:21|199:900001-651907Сифон Ани для душевого поддона 1 1/2"*90, h65 хром /25/шт Сифон Ани для душевого поддона 1 1/2"*90, h65 хром /25/шт209.622014-12-03 09:56:21209.62247.3511154972014-12-03 09:56:21|193:900001-651405Ниппель переходной 2"х3/4"Ш/Ш никель VALTEC /10/200/шт Ниппель переходной 2"х3/4"Ш/Ш никель VALTEC /10/200/шт156.292014-12-03 09:56:21156.29184.4211149952014-12-03 09:56:21|162:900001-651914Сифон Варяг 1 1/2"*40 с г/тр 40*40 /35шт Сифон Варяг 1 1/2"*40 с г/тр 40*40 /35шт46.772014-12-03 09:56:2146.7755.1911155042014-12-03 09:56:21|151:900001-651639Поддон глубокий (EW-32190) 100*100шт Поддон глубокий (EW-32190) 100*100шт1.022014-12-03 09:56:211.021.2011152292014-12-03 09:56:21|238:900001-651992Смеситель G-LAUF для ванны, картридж 40мм, излив 35см, стандарт, NVL-6169шт Смеситель G-LAUF для ванны, картридж 40мм, излив 35см, стандарт, NVL-6169шт1427.282014-12-03 09:56:211427.281684.1911155822014-12-03 09:56:21|183:900001-651372Набор для дв.сифона с выпуском 3 1/2" /10 L0115шт Набор для дв.сифона с выпуском 3 1/2" /10 L0115шт285.932014-12-03 09:56:21285.93337.4011149622014-12-03 09:56:21|200:900001-652353Тройник 110/110 угол 45 для внутр.кан. /15 (г.Красноярск)шт Тройник 110/110 угол 45 для внутр.кан. /15 (г.Красноярск)шт49.752014-12-03 09:56:2149.7558.7011159432014-12-03 09:56:21|142:900001-651855Сифон Ани Грот 1 1/2"*40 /45шт Сифон Ани Грот 1 1/2"*40 /45шт76.032014-12-03 09:56:2176.0389.7211154452014-12-03 09:56:21|170:900001-652411Тройник переход 1"ВРх1/2"ВРх1"ВР STS 6/60/шт Тройник переход 1"ВРх1/2"ВРх1"ВР STS 6/60/шт49.792014-12-03 09:56:2149.7958.7511160012014-12-03 09:56:21|171:900001-651497Панель фронтальная NORD 150 ( арт 169209)шт Панель фронтальная NORD 150 ( арт 169209)шт11502014-12-03 09:56:211150.001357.0011150872014-12-03 09:56:21|276:900001-651949Смеситель G-LAUF для ванны 1/2 керамика, катрид. перекл. душа., массажн. лейка, крест QML-856шт Смеситель G-LAUF для ванны 1/2 керамика, катрид. перекл. душа., массажн. лейка, крест QML-856шт862.542014-12-03 09:56:21862.541017.8011155392014-12-03 09:56:21|208:900001-234392Полотенцесушитель М 3/4" 500*500 хром в комплекте с крепежемшт Полотенцесушитель М 3/4" 500*500 хром в комплекте с крепежемшт466.632014-05-05 09:55:30466.63550.622711822014-05-05 09:55:30|209:900001-234392Полотенцесушитель М 3/4" 500*500 хром в комплекте с крепежемшт Полотенцесушитель М 3/4" 500*500 хром в комплекте с крепежемшт466.632014-12-03 09:56:21466.63550.6211162842014-12-03 09:56:21|194:900001-651568Подводка гибкая для воды 180 см. г/ш "Акватехник" /10/шт Подводка гибкая для воды 180 см. г/ш "Акватехник" /10/шт74.312014-12-03 09:56:2174.3187.6911151582014-12-03 09:56:21|159:900001-652437Трос сантехнический 5м. д5 Новосиб.шт Трос сантехнический 5м. д5 Новосиб.шт139.012014-12-03 09:56:21139.01164.0311160272014-12-03 09:56:21|188:900001-652250Смеситель для ванны, керам., коротк. излив, Pureшт Смеситель для ванны, керам., коротк. излив, Pureшт3206.262014-12-03 09:56:213206.263783.3911158402014-12-03 09:56:21|233:900001-651619Подводка гибкая для смесителя 80 см. "Акватехник" пара(кор.+дл. штуцер)пар. Подводка гибкая для смесителя 80 см. "Акватехник" пара(кор.+дл. штуцер)пар.90.452014-12-03 09:56:2190.45106.7311152092014-12-03 09:56:21|254:900001-652154Смеситель Frap ван., шар., дл. излив, (латунь), хром, с керам. ручками F2618^7128Sшт Смеситель Frap ван., шар., дл. излив, (латунь), хром, с керам. ручками F2618^7128Sшт958.082014-12-03 09:56:21958.081130.5411157442014-12-03 09:56:21|138:900001-651456Панель боковая VEGA 100шт Панель боковая VEGA 100шт1695.762014-12-03 09:56:211695.762001.0011150462014-12-03 09:56:21|210:900001-652455Труба PP-R Ду 32 PN 25, SDR6 (4 м) г.Красноярск /упак. 15шт./шт Труба PP-R Ду 32 PN 25, SDR6 (4 м) г.Красноярск /упак. 15шт./шт232.22014-12-03 09:56:21232.20274.0011160452014-12-03 09:56:21|160:900001-652420Тройник чугун оцинкованный 25х15 /100шт Тройник чугун оцинкованный 25х15 /100шт35.392014-12-03 09:56:2135.3941.7611160102014-12-03 09:56:21|198:900001-651553Подводка гибкая для воды 40 см. г/г "Акватехник" /20/360шт Подводка гибкая для воды 40 см. г/г "Акватехник" /20/360шт41.262014-12-03 09:56:2141.2648.6911151432014-12-03 09:56:21|177:900001-651527Перелив п/а пласт. хром. регулир. /15/ EM421шт Перелив п/а пласт. хром. регулир. /15/ EM421шт232.632014-12-03 09:56:21232.63274.5011151172014-12-03 09:56:21|239:900001-652046Смеситель G-LAUF для кухни 1/2 керам., мет. гайка, кранбукса, крест KOF056Aшт Смеситель G-LAUF для кухни 1/2 керам., мет. гайка, кранбукса, крест KOF056Aшт606.342014-12-03 09:56:21606.34715.4811156362014-12-03 09:56:21|144:900001-237756Трос сантехнический (9мм) 5мшт Трос сантехнический (9мм) 5мшт117.862014-05-05 09:55:30117.86139.082745592014-05-05 09:55:30|145:900001-237756Трос сантехнический (9мм) 5мшт Трос сантехнический (9мм) 5мшт117.862014-12-03 09:56:21117.86139.0811163942014-12-03 09:56:21|169:900001-651838Сифон Ани 1 1/2"*40 с отводом для с/м /45шт Сифон Ани 1 1/2"*40 с отводом для с/м /45шт86.2|2014:56:2186.22101.7411154282014-12-03 09:56:21|167:900001-651857Сифон Ани Грот 1 1/2"*40 с г/т 40/50 /25шт Сифон Ани Грот 1 1/2"*40 с г/т 40/50 /25шт95.532014-12-03 09:56:2195.53112.7211154472014-12-03 09:56:21|219:900001-651606Подводка гибкая для смесителей сталь 1/2"xM10x150 см CTM /пара/пар. Подводка гибкая для смесителей сталь 1/2"xM10x150 см CTM /пара/пар.115.812014-12-03 09:56:21115.81136.6611151962014-12-03 09:56:21|230:900001-652516Труба д50мм L-1000мм для внутр.кан. /10/ толщ. стенки 1,8 (г.Красноярск)шт Труба д50мм L-1000мм для внутр.кан. /10/ толщ. стенки 1,8 (г.Красноярск)шт38.532014-12-03 09:56:2138.5345.4711161062014-12-03 09:56:21|155:900001-651728Прокладка сантех резина 2" /50/упак Прокладка сантех резина 2" /50/упак203.412014-12-03 09:56:21203.41240.0211153182014-12-03 09:56:21|158:900001-652551Труба металлопластиковая Ду 32 Sanmixм Труба металлопластиковая Ду 32 Sanmixм62.952014-12-03 09:56:2162.9574.2811161412014-12-03 09:56:21|254:900001-652187Смеситель Frap кух., шар.35mm., гайка хром, TITANICлюкс(латунь), бок. ручка G4009шт Смеситель Frap кух., шар.35mm., гайка хром, TITANICлюкс(латунь), бок. ручка G4009шт1875.142014-12-03 09:56:211875.142212.6711157772014-12-03 09:56:21|118:900001-053706Муфта стальная 25шт Муфта стальная 25шт17.152014-03-12 10:32:2217.1520.24535032014-03-12 10:32:22|119:900001-053706Муфта стальная 25шт Муфта стальная 25шт17.522014-03-18 08:55:0117.5220.671925102014-03-18 08:55:01|119:900001-053706Муфта стальная 25шт Муфта стальная 25шт17.152014-05-15 09:08:2717.1520.242558022014-05-15 09:08:27|119:900001-053706Муфта стальная 25шт Муфта стальная 25шт21.232014-05-05 09:55:3021.2325.052705342014-05-05 09:55:30|119:900001-053706Муфта стальная 25шт Муфта стальная 25шт17.522014-06-18 11:43:1317.5220.673822052014-06-18 11:43:13|119:900001-053706Муфта стальная 25шт Муфта стальная 25шт17.152014-07-31 09:56:5617.1520.245650712014-07-31 09:56:56|119:900001-053706Муфта стальная 25шт Муфта стальная 25шт17.522014-08-13 10:50:0417.5220.676053352014-08-13 10:5|0:|4:9000|1:0|0:|517:02:05|120:900001-053706Муфта стальная 25шт Муфта стальная 25шт23.732015-03-03 09:24:1723.7328.0011022552015-03-03 09:24:17|120:900001-053706Муфта стальная 25шт Муфта стальная 25шт20.592014-12-03 09:56:2120.5924.3011162102014-12-03 09:56:21|170:900001-236786Прокладка сантех паронит 1/2"цена за штуку /шт Прокладка сантех паронит 1/2"цена за штуку /шт1.122014-05-05 09:55:301.121.322735882014-05-05 09:55:30|171:900001-236786Прокладка сантех паронит 1/2"цена за штуку /шт Прокладка сантех паронит 1/2"цена за штуку /шт|0:|6:211.12|0:|6:21|236|6814:56:21106.90126.1411152112014-12-03 09:56:21|233:900001-652535Труба для наруж.кан. д160мм L-3000мм /4/ толщ. стенки 4,3 (г.Красноярск)шт Труба для наруж.кан. д160мм L-3000мм /4/ толщ. стенки 4,3 (г.Красноярск)шт765.252014-12-03 09:56:21765.25903.0011161252014-12-03 09:56:21|172:900001-651445Отвод стиральной машины 1 1/2"*32, M120 /40шт Отвод стиральной машины 1 1/2"*32, M120 /40шт17.812014-12-03 09:56:2117.8121.0111150352014-12-03 09:56:21|245:900001-652224Смеситель Frap умыв., шар., двуручк., (латунь), хром, с метал.. ручками, F1092шт Смеситель Frap умыв., шар., двуручк., (латунь), хром, с метал.. ручками, F1092шт774.832014-12-03 09:56:21774.83914.3011158142014-12-03 09:56:21|201:900001-652102Смеситель G-LAUF для кухни шар. 40мм эконом 4PB-1043 /2/шт Смеситель G-LAUF для кухни шар. 40мм эконом 4PB-1043 /2/шт324.192014-12-03 09:56:21324.19382.5511156922014-12-03 09:56:21|210:900001-652272Смеситель кух., керам., высокий поворотный излив, Waterfallшт Смеситель кух., керам., высокий поворотный излив, Waterfallшт3905.142014-12-03 09:56:213905.144608.0711158622014-12-03 09:56:21|202:900001-651729Прокладка сантех резина 3/4" "Американка"(цена за шт)/100шт/шт Прокладка сантех резина 3/4" "Американка"(цена за шт)/100шт/шт2.62014-12-03 09:56:212.603.0711153192014-12-03 09:56:21|201:900001-651523Перелив п/а металл. пласт. белый, прямоточный /15/ EM511шт Перелив п/а металл. пласт. белый, прямоточный /15/ EM511шт220.932014-12-03 09:56:21220.93260.7011151132014-12-03 09:56:21|229:900001-652199Смеситель Frap кух.,керам., пов. излив, (латунь), двуручк., хром F4224шт Смеситель Frap кух.,керам., пов. излив, (латунь), двуручк., хром F4224шт486.792014-12-03 09:56:21486.79574.4111157892014-12-03 09:56:21|286:900001-652159Смеситель Frap ван.,керам., плоск. излив, MUCAлюкс под бронзу(латунь), лейка 1 режим, G2231-4^35Fшт Смеситель Frap ван.,керам., плоск. излив, MUCAлюкс под бронзу(латунь), лейка 1 режим, G2231-4^35Fшт2479.082014-12-03 09:56:212479.082925.3211157492014-12-03 09:56:21|135:900001-233773Отвод гнутый оцинк. ДУ-50шт Отвод гнутый оцинк. ДУ-50шт67.372014-05-05 09:55:3067.3779.502705632014-05-05 09:55:30|136:900001-233773Отвод гнутый оцинк. ДУ-50шт Отвод гнутый оцинк. ДУ-50шт67.372014-12-03 09:56:2167.3779.5011162742014-12-03 09:56:21|185:900001-652301Средство для очистки гидромассажных ванн AQUANETшт Средство для очистки гидромассажных ванн AQUANETшт220.342014-12-03 09:56:21220.34260.0011158912014-12-03 09:56:21|185:900001-651436Отвод 50 угол 45 для внутр.кан. /280 (г.Красноярск)шт Отвод 50 угол 45 для внутр.кан. /280 (г.Красноярск)шт7.922014-12-03 09:56:217.929.3511150262014-12-03 09:56:21|184:900001-236774Прокладка кран-буксы "ступенька"для росс.смесителейшт Прокладка кран-буксы "ступенька"для росс.смесителейшт1.442014-05-05 09:55:301.441.702735762014-05-05 09:55:30|185:900001-236774Прокладка кран-буксы "ступенька"для росс.смесителейшт Прокладка кран-буксы "ступенька"для росс.смесителейшт1.442014-12-03 09:56:211.441.7011162932014-12-03 09:56:21|143:900001-651638Поддон глубокий (EW-32018M(L))шт Поддон глубокий (EW-32018M(L))шт1.022014-12-03 09:56:211.021.2011152282014-12-03 09:56:21|166:900001-651930Сифон ССК бутылочный белый с гофрой /25/шт Сифон ССК бутылочный белый с гофрой /25/шт30.282014-12-03 09:56:2130.2835.7311155202014-12-03 09:56:21|177:900001-651758Ревизия 110 для внутр.кан. (г.Красноярск) /30/шт Ревизия 110 для внутр.кан. (г.Красноярск) /30/шт45.22014-12-03 09:56:2145.2053.3411153482014-12-03 09:56:21|194:900001-238866Обвязка ( каркас) под поддон стальной большая 900*900шт Обвязка ( каркас) под поддон стальной большая 900*900шт13222014-05-05 09:55:301322.001559.962756692014-05-05 09:55:30|195:900001-238866Обвязка ( каркас) под поддон стальной большая 900*900шт Обвязка ( каркас) под поддон стальной большая 900*900шт13222014-12-03 09:56:211322.001559.9611162522014-12-03 09:56:21|237:900001-652170Смеситель Frap кух., однорычажный, (латунь), хирург., хром, с гайкой F4954шт Смеситель Frap кух., однорычажный, (латунь), хирург., хром, с гайкой F4954шт517.362014-12-03 09:56:21517.36610.4911157602014-12-03 09:56:21|181:900001-651589Подводка гибкая для воды сталь 1/2" г/г 40 cм CTMшт Подводка гибкая для воды сталь 1/2" г/г 40 cм CTMшт322014-12-03 09:56:2132.0037.7611151792014-12-03 09:56:21|179:900001-652325Трап 50 гор.вып. нерег., нерж реш.150*150 /20шт Трап 50 гор.вып. нерег., нерж реш.150*150 /20шт172.942014-12-03 09:56:21172.94204.0711159152014-12-03 09:56:21|138:900001-236806Прокладка сантех силикон 1 "шт Прокладка сантех силикон 1 "шт1.622014-05-05 09:55:301.621.912736082014-05-05 09:55:30|139:900001-236806Прокладка сантех силикон 1 "шт Прокладка сантех силикон 1 "шт1.622014-12-03 09:56:211.621.9111163172014-12-03 09:56:21|166:900001-652429Трос сантехнический (6мм) 3,5м сталь СТМшт Трос сантехнический (6мм) 3,5м сталь СТМшт71.892014-12-03 09:56:2171.8984.8311160192014-12-03 09:56:21|198:900001-652358Тройник 110/50 угол 87 для внутр.кан. /30 (г.Красноярск)шт Тройник 110/50 угол 87 для внутр.кан. /30 (г.Красноярск)шт33.732014-12-03 09:56:2133.7339.8011159482014-12-03 09:56:21|197:900001-652081Смеситель G-LAUF для кухни шар. 40мм бок.ручка 8180-8Gшт Смеситель G-LAUF для кухни шар. 40мм бок.ручка 8180-8Gшт560.092014-12-03 09:56:21560.09660.9111156712014-12-03 09:56:21|178:900001-239318Нить д/герм.резьб.соед. 80м "Tangit UNI-LOCK"шт Нить д/герм.резьб.соед. 80м "Tangit UNI-LOCK"шт395.432014-05-05 09:55:30395.43466.612761302014-05-05 09:55:30|179:900001-239318Нить д/герм.резьб.соед. 80м "Tangit UNI-LOCK"шт Нить д/герм.резьб.соед. 80м "Tangit UNI-LOCK"шт395.432014-12-03 09:56:21395.43466.6111162502014-12-03 09:56:21|254:900001-652014Смеситель G-LAUF для ванны, картридж 40мм-малошумный, излив 35см, ЛЮКС, GFA-6-073шт Смеситель G-LAUF для ванны, картридж 40мм-малошумный, излив 35см, ЛЮКС, GFA-6-073шт1385.122014-12-03 09:56:211385.121634.4411156042014-12-03 09:56:21|162:900001-652388Тройник для мет.пл.тр 16*1/2*16" Ц/Ш/Цшт Тройник для мет.пл.тр 16*1/2*16" Ц/Ш/Цшт53.372014-12-03 09:56:2153.3762.9811159782014-12-03 09:56:21|201:900001-652101Смеситель G-LAUF для кухни шар. 40мм эконом 4PB-1035 /2/шт Смеситель G-LAUF для кухни шар. 40мм эконом 4PB-1035 /2/шт379.862014-12-03 09:56:21379.86448.2411156912014-12-03 09:56:21|138:900001-652413Тройник чугун 50 имп. /20/шт Тройник чугун 50 имп. /20/шт30.342014-12-03 09:56:2130.3435.8011160032014-12-03 09:56:21|117:900001-221339Тройник чугун 20шт Тройник чугун 20шт16.922014-05-05 09:55:3016.9219.962705392014-05-05 09:55:30|118:900001-221339Тройник чугун 20шт Тройник чугун 20шт16.922014-12-03 09:56:2116.9219.9611163812014-12-03 09:56:21|119:900001-075744Муфта стальная 50шт Муфта стальная 50шт39.252014-03-18 08:55:0139.2546.311925372014-03-18 08:55:01|119:900001-075744Муфта стальная 50шт Муфта стальная 50шт57.122014-05-05 09:55:3057.1267.402705372014-05-05 09:55:30||
Point(doGetString)
Point(onGetString)
}
Add(For,1565852,161,112)
{
End=100
link(onEvent,8533446:doEnum,[])
link(onStop,10816952:doEnum,[(210,125)(210,146)])
}
Add(StrList,6260188,315,35)
{
Strings=#119:900001-075744Муфта стальная 50шт Муфта стальная 50шт39.252014-06-18 11:43:1339.2546.313822082014-06-18 11:43:13|142:900|1:5|0:|122:56:21|119:900001-075744Муфта стальная 50шт Муфта стальная 50шт39.252014-06-18 11:43:1339.2546.313822082014-06-18 11:43:13||
Point(doGetString)
Point(onGetString)
}
Add(HubEx,7251812,439,140)
{
link(onEvent,11935250:doAdd,[])
}
Add(ArrayEnum,8527459,434,56)
{
}
Add(ArrayEnum,8533446,273,112)
{
link(onItem,7251812:doWork1,[(443,118)])
link(Array,1275019:Array,[])
}
Add(Edit,180565,735,350)
{
Left=490
Top=250
Width=95
}
Add(DoData,4603611,588,357)
{
link(onEventData,180565:doText2,[])
link(Data,11935250:Count,[(594,275)(601,275)])
}
Add(StrList,15665462,714,581)
{
}
Add(Button,5367531,364,574)
{
Left=10
Top=435
Caption="Search"
Data=Integer(0)
link(onClick,153000:doEvent1,[])
}
Add(TimeCounter,2402154,469,588)
{
link(onStart,11090039:doSearch,[(555,594)(555,587)])
link(onStop,13068211:doText,[(555,601)(555,643)])
}
Add(Hub,153000,420,574)
{
OutCount=4
link(onEvent1,9005067:doWork3,[(452,580)])
link(onEvent2,15665462:doClear,[(574,587)(574,594)])
link(onEvent3,2402154:doStart,[])
link(onEvent4,2402154:doStop,[])
}
Add(Label,13068211,609,637)
{
Left=102
Top=442
}
Add(HubEx,9005067,448,420)
{
link(onEvent,5047488:doWork3,[(626,426)])
}
Add(SearchInFile,11090039,609,581)
{
FileName="spisok.txt"
Sensitive=1
Point(String)
Point(onEnd)
link(onSearch,15665462:doAdd,[(677,594)(677,587)])
link(Text,2761752:Var1,[(622,278)])
link(onEnd,3939390:doEvent1,[(660,601)(660,643)])
}
Add(GetDataEx,2761752,672,273)
{
link(Data,16071924:Value,[])
}
Add(Hub,6294994,448,147)
{
link(onEvent1,4603611:doData,[(475,153)(475,363)])
link(onEvent2,11935250:doSave,[(525,160)(525,181)])
}
Add(DoData,9341557,714,637)
{
link(onEventData,12549506:doAdd,[(754,643)(754,587)])
link(Data,15665462:Text,[])
}
Add(Hub,3939390,679,637)
{
link(onEvent1,12549506:doClear,[(728,643)(728,594)])
link(onEvent2,9341557:doData,[(703,650)(703,643)])
}
Add(Memo,12549506,763,581)
{
Left=180
Top=445
Width=255
Height=125
ScrollBars=2
}



Хотя он может работать медленней, чем второй, но ищет все повторения.
карма: 1

0
Ответов: 186
Рейтинг: 9
#36: 2015-03-05 14:17:42 ЛС | профиль | цитата
DRc писал(а):
Третий вариант снизу.

Да, я видел этот вариант у Tad.

Плохо что работа с диском, а поиск всех вхождений со скоростью ArrayFind это конечно плюс.

Как я понимаю, предел скорости достигнут.

------------ Дoбавленo в 13.43:
Еще один вариант. Вариант 4.
Компонент Position, и ищем в Memory.
Это подходит для моих строк, я могу примерно рассчитать длину каждой строки.

Так же хотелось бы добавить BlockFind верхнюю точку Position, все стало бы проще.

Add(ArrayEnum,10816952,322,154)
{
link(onItem,7251812:doWork2,[])
link(onEndEnum,6294994:doEvent1,[])
link(Array,6260188:Array,[])
}
Add(MainForm,1579138,91,112)
{
Width=655
Height=766
link(onCreate,1565852:doFor,[])
}
Add(StrList,11935250,693,154)
{
FileName="spisok.txt"
Point(doGetString)
Point(onGetString)
}
Add(Edit,5998970,777,84)
{
Left=10
Top=175
Width=430
Text="Муфта переход. 1 1/4" - 1/2" SМшт45.442014-12-03 09:56:21"
}
Add(Button,1898356,399,238)
{
Left=10
Top=140
Caption="Search"
Data=Integer(0)
link(onClick,8663686:doStart,[])
}
Add(ArrayEnum,3008004,707,238)
{
link(onItem,16076296:doCompare,[])
link(onEndEnum,5311411:doEvent1,[(769,251)(769,279)])
link(Array,13286750:Var2,[])
}
Add(TimeCounter,8663686,511,238)
{
link(onStart,3008004:doEnum,[])
link(onStop,10799305:doText,[(569,251)(569,272)])
}
Add(Label,10799305,595,266)
{
Left=97
Top=142
}
Add(StrMask,16076296,917,238)
{
Point(doMask)
link(onTrue,5588019:doAdd,[])
}
Add(FormatStr,8161445,868,161)
{
DataCount=1
Mask="*%1*"
link(onFString,16076296:doMask,[(908,167)(908,251)])
link(Str1,594595:Var3,[(874,138)])
}
Add(Button,10304679,427,434)
{
Left=10
Top=240
Caption="Search"
Data=Integer(0)
link(onClick,4681328:doEvent1,[])
}
Add(Memo,12998003,1029,455)
{
Left=180
Top=215
Width=255
Height=125
ScrollBars=2
}
Add(TimeCounter,3104725,532,448)
{
link(onStart,1124591:doFind,[])
link(onStop,5230228:doText,[(618,461)(618,503)])
}
Add(Label,5230228,714,497)
{
Left=102
Top=247
}
Add(Hub,4681328,483,434)
{
OutCount=4
link(onEvent2,12998003:doClear,[(898,447)(898,468)])
link(onEvent3,3104725:doStart,[])
link(onEvent4,3104725:doStop,[])
}
Add(ArrayFind,1124591,742,448)
{
Partial=0
link(onFind,15810251:doCompare,[])
link(Array,7334526:Var2,[])
link(Index,3034059:Value,[])
link(Value,2761752:Var2,[(762,320)(783,320)])
}
Add(GetDataEx,13286750,707,217)
{
link(Data,11935250:Array,[])
}
Add(If_else,15810251,798,448)
{
Op2=Integer(-1)
link(onFalse,14604591:doRead,[])
}
Add(ArrayRW,14604591,875,455)
{
link(onRead,12998003:doAdd,[])
link(Array,7334526:Var3,[(881,411)])
}
Add(GetDataEx,7334526,742,406)
{
link(Data,13286750:Var3,[(748,222)])
}
Add(Memory,3034059,749,350)
{
Default=Integer(0)
}
Add(Memory,16071924,777,161)
{
Point(Data)
link(onData,748166:doLength,[])
link(Data,594595:Var2,[])
}
Add(Hub,5311411,798,273)
{
OutCount=3
link(onEvent1,8663686:doStop,[(820,279)(820,317)(499,317)(499,251)])
link(onEvent2,12825736:doData,[(889,286)(889,335)])
link(onEvent3,5588019:doClear,[(901,293)(901,258)])
}
Add(Memo,8927946,1064,308)
{
Left=185
Top=10
Width=255
Height=150
ScrollBars=2
}
Add(StrList,5588019,1001,245)
{
}
Add(DoData,12825736,1001,329)
{
link(onEventData,8927946:doText,[])
link(Data,5588019:Text,[])
}
Add(StrList,1275019,252,49)
{
Strings=#136:900001-234563Резьба оцинкованная 20 /200шт Резьба оцинкованная 20 /200шт5.852014-05-05 09:55:305.856.902713532014-05-05 09:55:30|137:900001-234563Резьба оцинкованная 20 /200шт Резьба оцинкованная 20 /200шт5.712014-12-03 09:56:215.716.7411163302014-12-03 09:56:21|163:900001-652403Тройник для мет.пл.тр 26*20*26" Ц/Ц/Цшт Тройник для мет.пл.тр 26*20*26" Ц/Ц/Цшт127.692014-12-03 09:56:21127.69150.6811159932014-12-03 09:56:21|241:900001-651909Сифон Ани для душевого поддона 1 1/2"*90, h90 с переливом 45 40*50 хром /20/шт Сифон Ани для душевого поддона 1 1/2"*90, h90 с переливом 45 40*50 хром /20/шт220.342014-12-03 09:56:21220.34260.0011154992014-12-03 09:56:21|195:900001-652096Смеситель G-LAUF для кухни шар. 40мм на гайке 4G-4169шт Смеситель G-LAUF для кухни шар. 40мм на гайке 4G-4169шт551.082014-12-03 09:56:21551.08650.2711156862014-12-03 09:56:21|196:900001-652258Смеситель для ванны-душа, керам., коротк. излив, Ecoшт Смеситель для ванны-душа, керам., коротк. излив, Ecoшт2285.472014-12-03 09:56:212285.472696.8511158482014-12-03 09:56:21|179:900001-652316Трап 110 гор.вып. рег., металл. реш.15*15 /6/шт Трап 110 гор.вып. рег., металл. реш.15*15 /6/шт443.372014-12-03 09:56:21443.37523.1811159062014-12-03 09:56:21|123:900001-652344Тройник 1" хром Gшт Тройник 1" хром Gшт116.252014-12-03 09:56:21116.25137.1711159342014-12-03 09:56:21|290:900001-652123Смеситель Frap ван., керам., дл. излив S350 mm, POLLMNлюкс(латунь), лейка 1 режим, хром G2245^7130Sшт Смеситель Frap ван., керам., дл. излив S350 mm, POLLMNлюкс(латунь), лейка 1 режим, хром G2245^7130Sшт1240.952014-12-03 09:56:211240.951464.3211157132014-12-03 09:56:21|185:900001-651438Отвод 50 угол 67 для внутр.кан. (г.Красноярск) /35/шт Отвод 50 угол 67 для внутр.кан. (г.Красноярск) /35/шт102014-12-03 09:56:2110.0011.8011150282014-12-03 09:56:21|0:|
Point(doGetString)
Point(onGetString)
}
Add(For,1565852,154,126)
{
End=1000
link(onEvent,8533446:doEnum,[])
link(onStop,10816952:doEnum,[(203,139)(203,160)])
}
Add(StrList,6260188,308,49)
{
Strings=#148:900001-651346Муфта переход. 1 1/4" - 1/2" SМшт Муфта переход. 1 1/4" - 1/2" SМшт45.442014-12-03 09:56:2145.4453.6211149362014-12-03 09:56:21|210:900001-651735Прокладка сантех резина Ду 74*94 круглая под смыв.бачок /200шт/шт Прокладка сантех резина Ду 74*94 круглая под смыв.бачок /200шт/шт8.782014-12-03 09:56:218.7810.3611153252014-12-03 09:56:21|148:900001-651346Муфта переход. 1 1/4" - 1/2" SМшт Муфта переход. 1 1/4" - 1/2" SМшт45.442014-12-03 09:56:2145.4453.6211149362014-12-03 09:56:21|210:900001-651735Прокладка сантех резина Ду 74*94 круглая под смыв.бачок /200шт/шт Прокладка сантех резина Ду 74*94 круглая под смыв.бачок /200шт/шт8.782014-12-03 09:56:218.7810.3611153252014-12-03 09:56:21|
Point(doGetString)
Point(onGetString)
}
Add(HubEx,7251812,432,154)
{
link(onEvent,11935250:doAdd,[])
}
Add(ArrayEnum,8527459,497,70)
{
}
Add(ArrayEnum,8533446,266,126)
{
link(onItem,7251812:doWork1,[(436,132)])
link(Array,1275019:Array,[])
}
Add(Edit,180565,840,364)
{
Left=490
Top=250
Width=95
}
Add(DoData,4603611,700,371)
{
link(onEventData,180565:doText2,[])
link(Data,11935250:Count,[])
}
Add(StrList,15665462,1400,385)
{
}
Add(Button,5367531,1050,378)
{
Left=10
Top=355
Caption="Search"
Data=Integer(0)
link(onClick,153000:doEvent1,[])
}
Add(TimeCounter,2402154,1155,392)
{
link(onStart,11090039:doSearch,[(1241,398)(1241,370)])
link(onStop,13068211:doText,[(1241,405)(1241,447)])
}
Add(Hub,153000,1106,378)
{
OutCount=4
link(onEvent2,15665462:doClear,[(1260,391)(1260,398)])
link(onEvent3,2402154:doStart,[])
}
Add(Label,13068211,1295,441)
{
Left=102
Top=362
}
Add(SearchInFile,11090039,1295,364)
{
FileName="spisok.txt"
Sensitive=1
Point(String)
Point(onEnd)
link(onSearch,15665462:doAdd,[(1363,377)(1363,391)])
link(Text,7935619:Var2,[(1308,352)(972,352)(972,561)(678,561)])
link(onEnd,3939390:doEvent1,[(1346,384)(1346,447)])
}
Add(GetDataEx,2761752,777,287)
{
link(Data,16071924:Value,[])
}
Add(Hub,6294994,511,161)
{
OutCount=4
link(onEvent1,4603611:doData,[(538,167)(538,377)])
link(onEvent2,11935250:doSave,[(588,174)(588,195)])
link(onEvent3,7545657:doValue,[(571,181)(571,104)])
link(onEvent4,16071924:doValue,[(651,188)(651,167)])
}
Add(DoData,9341557,1400,455)
{
link(onEventData,12549506:doAdd,[(1440,461)(1440,391)])
link(Data,15665462:Text,[])
}
Add(Hub,3939390,1365,441)
{
OutCount=3
link(onEvent1,2402154:doStop,[(1391,447)(1391,426)(1143,426)(1143,405)])
link(onEvent2,12549506:doClear,[(1414,454)(1414,398)])
link(onEvent3,9341557:doData,[])
}
Add(Memo,12549506,1449,385)
{
Left=180
Top=365
Width=255
Height=125
ScrollBars=2
}
Add(Position,11407394,532,630)
{
ZeroPos=0
Point(doReset)
link(onSearch,10260637:doCompare,[])
link(Str,5962527:Var2,[])
link(Target,7935619:Var1,[(545,551)])
}
Add(StrList,5382399,991,677)
{
}
Add(Button,6800550,291,677)
{
Left=10
Top=505
Caption="Search"
Data=Integer(0)
link(onClick,1499322:doEvent1,[])
}
Add(TimeCounter,11742731,396,691)
{
link(onStart,2104991:doWork2,[(480,697)(480,636)])
link(onStop,10969254:doText,[(482,704)(482,739)])
}
Add(Hub,1499322,347,677)
{
OutCount=4
link(onEvent2,5382399:doClear,[])
link(onEvent3,11742731:doStart,[])
}
Add(Label,10969254,536,733)
{
Left=102
Top=512
}
Add(DoData,9038010,991,747)
{
link(onEventData,14577683:doAdd,[(1053,753)(1053,739)])
link(Data,5382399:Text,[])
}
Add(Hub,14642835,949,733)
{
OutCount=5
link(onEvent1,11742731:doStop,[(975,739)(975,721)(384,721)(384,704)])
link(onEvent2,14577683:doClear,[])
link(onEvent3,9038010:doData,[])
}
Add(Memo,14577683,1082,733)
{
Left=180
Top=515
Width=255
Height=125
ScrollBars=2
}
Add(Memory,7545657,616,98)
{
Point(Data)
link(Data,11935250:Text,[(622,86)(640,86)(640,218)(699,218)])
}
Add(GetDataEx,7935619,672,546)
{
link(Data,2761752:Var1,[(678,292)])
}
Add(If_else,10260637,581,630)
{
Op2=Integer(0)
link(onFalse,1212223:doCalc,[])
}
Add(HubEx,2104991,504,630)
{
link(onEvent,11407394:doSearch,[])
}
Add(Hub,16755865,777,637)
{
link(onEvent1,10977735:doCopy,[])
link(onEvent2,2104991:doWork3,[(803,650)(803,674)(508,674)])
}
Add(Copy,10977735,812,637)
{
link(onCopy,2539464:doSearch,[])
link(Str,5962527:Var3,[(818,607)])
link(Position,1212223:Result,[(825,625)(748,625)(748,681)(671,681)])
link(Count,681832:Result,[(832,620)(763,620)(763,677)(720,677)])
}
Add(GetDataEx,5962527,532,602)
{
link(Data,7545657:Value,[(538,366)(622,366)])
}
Add(GetDataEx,594595,777,133)
{
link(Data,5998970:Text,[])
}
Add(Length,748166,819,161)
{
link(onLength,8161445:doString,[])
link(Str,594595:Var1,[(825,149)(774,149)(774,138)])
}
Add(BlockFind,2539464,882,637)
{
IncludeBlock=1
StartBlock="
"
EndBlock="
"
link(onSearch,5382399:doAdd,[(952,643)(952,683)])
link(onEndSearch,14642835:doEvent1,[(932,650)(932,739)])
}
Add(FastMathParse,681832,714,637)
{
DataCount=3
MathStr="%1 + (%2*2) - %3"
ResultType=0
link(onResult,16755865:doEvent1,[])
link(X1,11407394:Position,[(720,625)(629,625)(629,674)(538,674)])
link(X2,14024403:Var2,[])
}
Add(FastMathParse,1212223,665,637)
{
MathStr="%1 - %2"
ResultType=0
link(onResult,681832:doCalc,[])
link(X2,14024403:Var1,[(678,579)])
}
Add(GetDataEx,14024403,721,574)
{
Angle=1
link(Data,748166:Result,[(825,579)])
}
Add(InfoTip,2993960,248,588)
{
Info=#9:Вариант 4|
Font=[MS Sans Serif,8,0,255,1]
Frame=3
Width=953
Height=207
Margin=5
}


Работает в 4-5 раз быстрее.
------------ Дoбавленo в 14.17:
А на 1000000 строк в 10 раз быстрее.

https://cloud.mail.ru/public/96fd20ced98f/serch.jpg
карма: 0

0
Ответов: 824
Рейтинг: 138
#37: 2015-03-06 02:21:43 ЛС | профиль | цитата
Почитал ветку и мне стало интересно...
Мой вариант поиска
карма: 1

0
Ответов: 186
Рейтинг: 9
#38: 2015-03-06 06:36:59 ЛС | профиль | цитата
sashaoli, Ваш вариант похож на 1 вариант с перебором строк, только Вы используете Re_Check, а у меня StrMask.

Обратите внимание на тест, StrMask получается немного быстрее Re_Check.

https://cloud.mail.ru/public/e0c9fcece205/serch1.jpg
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#39: 2015-03-06 10:59:44 правка | ЛС | профиль | цитата


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

0
Ответов: 824
Рейтинг: 138
#40: 2015-03-06 11:20:21 ЛС | профиль | цитата
[flood]Выше я.Забыл авторизоваться[/flood]
карма: 1

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