Вверх ↑
Этот топик читают: Гость
Ответов: 817
Рейтинг: 52
#1: 2015-04-14 20:37:52 ЛС | профиль | цитата
Добрый день!
Есть необходимость искать по одному столбцу в MTStrTbl и после нахождения нужного значения выдавать всю строку с разделителями. Как это сделать всю голову сломал.
Вроде поиск сделал, но он ищет не по столбцу, а по всей строке, это плохо тем, что если в разных столбцах будет одинаковое искомое значение, он выдаст одну верную строку и все остальные не верные.
Помогите сделать поиск по столбцу.
code_35494.txt
карма: 1

0
файлы: 1code_35494.txt [1.8KB] [518]
Ответов: 2059
Рейтинг: 132
#2: 2015-04-14 20:52:16 ЛС | профиль | цитата
Типичная задача для SQLite.
Наверное и примеры должны быть.
Другой вариант, перебор строк (MST_ArrayRows) и разложение многомерного потока.
Во втором варианте компонентов будет больше.
Add(MainForm,12120411,203,112)
{
Width=756
Height=682
link(onCreate,12375421:doEvent1,[(254,132)(254,104)])
}
Add(StrList,10530152,441,70)
{
Strings=#39:Иванов;1001;красный;2;фишка1;foto9.jpg|38:Петров;1002;Иванов;2;фишка2;foto9.jpg|43:Сидоров;1003;фиолетовый;1;фишка3;foto9.jpg|41:Васечкин;1004;зеленый;4;фишка4;foto9.jpg|41:Сахарович;1005;желтый;3;фишка5;foto9.jpg|38:Корейка;1006;серый;1;фишка6;foto9.jpg|40:Балабанов;1007;белый;3;фишка7;foto9.jpg|
}
Add(MT_String,15141203,546,161)
{
link(onResult,2301447:doRowAction,[])
}
Add(MST_RowAction,2301447,595,161)
{
MSTControl="tab"
}
Add(ArrayEnum,6797691,455,161)
{
link(onItem,10615940:doWork2,[(495,167)(495,181)])
link(Array,10530152:Array,[])
}
Add(MTStrTbl,14260304,504,84)
{
Left=5
Top=5
Width=730
Height=205
Name="tab"
Columns=#5:1=100|5:2=100|5:3=100|5:4=100|5:5=100|5:6=100|
}
Add(Button,3037701,175,224)
{
Left=15
Top=225
Width=80
Caption="Искать"
link(onClick,7716855:doEvent1,[(289,230)(289,370)])
}
Add(ArrayEnum,2115205,504,371)
{
link(onItem,16139014:doSeparateMT,[])
link(Array,9527170:Strings,[])
}
Add(Edit,15413565,406,266)
{
Left=125
Top=225
Width=235
Text="Иванов"
}
Add(MST_Clear,13548542,315,56)
{
MSTControl="tab"
}
Add(HubEx,10615940,518,175)
{
link(onEvent,15141203:doMTString,[])
}
Add(MST_ArrayRows,9527170,504,266)
{
MSTControl="tab"
}
Add(Hub,12375421,273,98)
{
link(onEvent1,13548542:doClear,[(301,104)(301,62)])
link(onEvent2,6797691:doEnum,[(371,111)(371,167)])
}
Add(RichEdit,13786822,700,364)
{
Left=385
Top=310
Width=215
Height=240
}
Add(MT_MultiData,16139014,560,371)
{
link(onData1,10753387:doCompare,[])
}
Add(StrMask,10753387,623,371)
{
Point(doMask)
link(onTrue,13786822:doAdd,[(677,384)(677,370)])
}
Add(Hub,7716855,371,364)
{
link(onEvent1,11291371:doData,[(395,370)(395,335)])
link(onEvent2,2115205:doEnum,[])
}
Add(DoData,11291371,406,329)
{
link(onEventData,10753387:doMask,[(530,335)(530,384)])
link(Data,15413565:Text,[])
}


карма: 6

0
Ответов: 817
Рейтинг: 52
#3: 2015-04-14 21:08:48 ЛС | профиль | цитата
SQL не подойдет, все в обычном текстовом файле, да и строк в этом файле 300+
А вот насчет второго варианта это интересно, пойду подумаю как это можно сделать.
карма: 1

0
Ответов: 2059
Рейтинг: 132
#4: 2015-04-14 21:33:06 ЛС | профиль | цитата
Примерно так:
code_35495.txt
карма: 6

0
файлы: 1code_35495.txt [2.3KB] [683]
Ответов: 223
Рейтинг: 24
#5: 2015-04-18 14:35:41 ЛС | профиль | цитата
можно так...
Add(MainForm,8727057,266,161)
{
Width=305
Height=270
Caption=""
Point(onChar)
link(onCreate,2180946:doEnum,[])
}
Add(StrList,11546707,322,98)
{
Strings=#5:1;2;3|8:11;22;33|8:77;88;99|8:qw;er;df|
}
Add(ArrayEnum,2180946,336,175)
{
link(onItem,4793532:doMTString,[])
link(Array,11546707:Array,[])
}
Add(MTStrTbl,899381,756,175)
{
Left=15
Top=35
Width=260
Height=120
Name="tab"
Columns=#1:1|1:2|1:3|
Grid=0
Point(Handle)
Point(Left)
Point(Top)
}
Add(MST_RowAction,13316852,455,161)
{
MSTControl="tab"
}
Add(MT_String,4793532,392,161)
{
link(onResult,13316852:doRowAction,[])
}
Add(MST_SelectRow,8868867,791,231)
{
MSTControl="tab"
}
Add(MST_Matrix,3276599,567,175)
{
MSTControl="tab"
}
Add(MatrixRW,2830896,567,231)
{
X=2
link(onRead,9938276:doCompare,[])
link(Matrix,3276599:Matrix,[])
link(X,4418474:Text,[])
link(Y,4882855:Position,[(594,219)(528,219)(528,275)(461,275)])
}
Add(Button,2576169,399,231)
{
Left=15
Top=185
Color=185
Caption="start"
link(onClick,4882855:doFor,[])
}
Add(Edit,4418474,581,126)
{
Left=165
Top=185
Width=65
Text="0"
}
Add(For,4882855,455,231)
{
End=3
link(onEvent,14272244:doValue,[])
}
Add(Edit,5436779,651,126)
{
Left=85
Top=185
Width=60
Text=""
}
Add(If_else,9938276,644,231)
{
link(onTrue,16430920:doData,[])
link(Op2,5436779:Text,[])
}
Add(Memory,14272244,522,231)
{
Default=Integer(4)
link(onData,2830896:doRead,[])
}
Add(DoData,16430920,704,231)
{
link(onEventData,3873873:doEvent1,[])
link(Data,14272244:Value,[(710,219)(619,219)(619,275)(528,275)])
}
Add(MT_String,7682238,896,238)
{
link(onResult,904629:doText,[])
}
Add(Hub,3873873,749,231)
{
link(onEvent1,8868867:doSelect,[])
link(onEvent2,8505053:doRead,[])
}
Add(MST_ArrayRows,3471343,847,189)
{
MSTControl="tab"
}
Add(MT_MTArrayRW,8505053,847,238)
{
link(onRead,7682238:doStr,[])
link(Array,3471343:Strings,[])
}
Add(Label,14771796,252,224)
{
Left=84
Top=165
Width=64
Height=17
Caption="ищем текст"
}
Add(Label,1409932,270,241)
{
Left=174
Top=165
Width=45
Height=17
Caption="столбец"
}
Add(Edit,904629,945,238)
{
Left=75
Top=5
Width=200
Text=""
}
Add(Label,3418342,287,257)
{
Left=19
Top=5
Width=39
Height=17
Caption="строка"
}

карма: 0

0
файлы: 1code_35507.txt [2.1KB] [442]
5
Сообщение
...
Прикрепленные файлы
(файлы не залиты)