Вверх ↑
Ответов: 80
Рейтинг: -5
#1: 2009-09-17 02:14:33 ЛС | профиль | цитата
Ребята, по итогам конструктивного, , диалога общества выкладываю результат:

code_14962.txt

Программа выложенная в начале топика повела себя странно - не компилируется отдельно от основной части схемы странно?
По идее должна была работать? Ладно, не будем о грустном.
Теперь бодрее, прошу обсудить работу данной программы целиком, и/или по частям.
Ставлю себе задачу: приняв на вход совокупность строк показывающее размеры файлов, отсортировать их как число, убрать повторы и сделать возможность менять количество символов в строке для дальнейшего поиска в файловой системе каково то определенного файла, или группы файлов, имеющие такие же или приблизительные размеры.

Недостатки данной программы:
- странно ведет себя таймер - нет сигнала после останова тем самым не запускается следующий этап.
- остальное работает в принципе неплохо но при изменении длинны строки чразмеры идут опять в перемежку.
- конечно было бы неплохо укорачивать строки с конца, а не сначала.
Нет ничего более постоянного, чем временное! А хорошее, все же -- враг лучшего !


------------ Дoбавленo в 03.23:
Блин, вот еще полная схема дополнения до промежуточных таблиц( добавлена вторая):
Make(delphi)
ver(4.03 build 180)
Add(MainForm,16510308,56,84)
{
Width=399
Height=478
link(onCreate,9602468:doEvent1,[])
}
Add(Random,8873230,182,105)
{
Max=15000
link(onRandom,11043801:doWork1,[(268,111)(268,97)])
}
Add(ChildGroupBox,11043801,322,91)
{
@Color=0
}
BEGIN_SDK
Add(EditMulti,4395781,21,21)
{
@Color=0
EventCount=3
WorkCount=4
DataCount=2
Width=545
Height=95
HOffset=200
link(doWork1,4006446:In,[(31,27)(31,27)])
link(doWork2,4315887:In,[(71,34)(71,34)])
link(doWork3,15894555:In,[(31,41)(31,41)])
link(doWork4,2992425:In,[(67,48)(67,48)])
}
Add(LineBreak,2192890,420,21)
{
@Color=0
Caption="Размер"
link(Out,4395781:onEvent1,[(519,27)(519,27)])
Primary=[16167966,504,364]
}
Add(LineBreak,16031352,221,44)
{
Caption="Текст заголовка"
Type=1
link(Data,4395781:Data1,[])
Primary=[11114155,773,271]
}
Add(GroupBox,10431958,1070,364)
{
@Color=5614080
Top=160
Width=380
Height=274
Color=15780518
Font=[MS Sans Serif,8,1,255,1]
Name="РазмерB"
Caption="Size"
Point(doCaption)
}
Add(LineBreak,9311171,236,217)
{
Caption="Старт"
link(Out,6152098:doEvent1,[])
Primary=[12891857,268,140]
}
Add(LineBreak,10683483,671,294)
{
Caption="ОперСброс1"
link(Out,5558249:doEvent1,[])
Primary=[7332845,-176,51]
}
Add(Label,13705641,443,329)
{
Left=115
Top=2
Width=11
Height=17
Color=15780518
Font=[MS Sans Serif,8,1,255,1]
Caption="+"
Point(doBringToFront)
}
Add(UpDown,13081669,366,329)
{
Left=101
Top=2
Width=10
Height=15
Color=15780518
Hint="Фильтр - Разделение по СИМВОЛАМ"
Max=25
Point(doBringToFront)
link(onPosition,3823243:doEvent1,[])
}
Add(MultiElement,9860082,443,371)
{
link(onEvent1,807113:In,[])
}
BEGIN_SDK
Add(EditMulti,13394823,21,21)
{
EventCount=1
WorkCount=2
Width=433
Height=144
link(doWork1,12025655:In,[])
link(doWork2,10644509:In,[])
}
Add(Delete,13145066,173,98)
{
Count=256
link(onDelete,10763736:doTrim,[])
link(Position,11500044:Result,[])
}
Add(Hub,12779076,299,98)
{
InCount=2
OutCount=1
link(onEvent1,446756:doData,[])
}
Add(LineBreak,10938344,59,56)
{
@Hint=#37:Счетчик количества выбранных символав|
Caption="Счтчик"
link(Out,2058245:doValue,[])
Primary=[12025655,-24,-35]
}
Add(LineBreak,4661474,17,98)
{
Caption="Data-строка"
link(Out,7974893:doWork1,[])
Primary=[10644509,74,-70]
}
Add(Math,11500044,180,56)
{
Op2=1
ResultType=0
}
Add(MultiElement,7974893,124,98)
{
link(onEvent1,13145066:doDelete,[])
link(onEvent2,12779076:doEvent2,[])
link(Data1,2058245:Value,[])
}
BEGIN_SDK
Add(EditMulti,1813348,21,21)
{
EventCount=2
WorkCount=1
DataCount=1
Width=181
Height=354
link(doWork1,7225789:doEvent,[(28,27)(28,76)])
}
Add(IndexToChanel,7225789,35,70)
{
Count=25
Point(Index)
link(onEvent1,1813348:onEvent2,[(135,76)(170,62)(170,34)])
link(onEvent2,537767:doEvent1,[])
link(onEvent3,537767:doEvent2,[])
link(onEvent4,537767:doEvent3,[])
link(onEvent5,537767:doEvent4,[])
link(onEvent6,537767:doEvent5,[])
link(onEvent7,537767:doEvent6,[])
link(onEvent8,537767:doEvent7,[])
link(onEvent9,537767:doEvent8,[])
link(onEvent10,537767:doEvent9,[])
link(onEvent11,537767:doEvent10,[])
link(onEvent12,537767:doEvent11,[])
link(onEvent13,537767:doEvent12,[])
link(onEvent14,537767:doEvent13,[])
link(onEvent15,537767:doEvent14,[])
link(onEvent16,537767:doEvent15,[])
link(onEvent17,537767:doEvent16,[])
link(onEvent18,537767:doEvent17,[])
link(onEvent19,537767:doEvent18,[])
link(onEvent20,537767:doEvent19,[])
link(onEvent21,537767:doEvent20,[])
link(onEvent22,537767:doEvent21,[])
link(onEvent23,537767:doEvent22,[])
link(onEvent24,537767:doEvent23,[])
link(onEvent25,537767:doEvent24,[])
link(Index,1813348:Data1,[(41,46)(27,46)])
}
Add(Hub,537767,105,77)
{
InCount=24
OutCount=1
link(onEvent1,1813348:onEvent1,[(177,83)(177,27)])
}
END_SDK
Add(LineBreak,6940421,322,21)
{
Caption="Результат"
link(Out,13394823:onEvent1,[])
Primary=[10591343,52,77]
}
Add(Trim,10763736,215,98)
{
Char=","
link(onTrim,6852375:doTrim,[])
}
Add(Trim,6852375,257,98)
{
Char="!"
link(onTrim,12779076:doEvent1,[])
}
Add(Memory,2058245,124,56)
{
link(onData,11500044:doOperation,[])
}
Add(ChangeMon,446756,329,98)
{
@Hint=#19:Фильтр одинаковости|
link(onData,10591343:In,[])
AddHint(-72,38,129,13,@Hint)
}
END_SDK
Add(Hub,3823243,406,329)
{
OutCount=5
link(onEvent1,13705641:doText,[])
link(onEvent2,8586672:In,[(475,342)(475,344)])
link(onEvent3,7332845:In,[(458,349)(458,351)])
link(onEvent4,9860082:doWork1,[(432,356)(432,377)])
link(onEvent5,12891857:In,[])
}
Add(LineBreak,12528398,241,378)
{
Caption="Data-строка"
link(Out,9860082:doWork2,[])
Primary=[16374019,228,-161]
}
Add(LineBreak,7473042,244,231)
{
Caption="End "
link(Out,16107846:doSortDigit,[])
Primary=[2992425,-131,-189]
}
Add(LineBreak,413638,30,532)
{
Caption="Результат"
link(Out,11803614:doData,[])
Primary=[807113,461,-161]
}
Add(InfoTip,431922,238,294)
{
Info=#25:Филтр строк с управлением|
Width=330
Height=116
}
Add(DoData,9073310,315,329)
{
Data=Integer(0)
link(onEventData,13081669:doPosition,[])
}
Add(Hub,7817784,315,175)
{
@Color=65535
OutCount=3
link(onEvent1,10925508:doClear,[])
link(onEvent2,2069545:In,[])
link(onEvent3,13549983:In,[])
}
Add(LineBreak,3287296,238,329)
{
Caption="Активатор"
link(Out,9073310:doData,[])
Primary=[13549983,336,-140]
}
Add(LineBreak,15231015,237,175)
{
@Hint=#43:Задает начальную установку частей программы|
@Color=0
Caption="Активатор"
link(Out,7817784:doEvent1,[])
Primary=[4315887,-117,-147]
}
Add(LineBreak,6600956,25,196)
{
@Color=0
Caption="Load/Save"
link(Out,6896592:doWork1,[])
Primary=[15894555,17,-161]
}
Add(LineBreak,15861386,228,63)
{
Caption="ИмяФайла"
Type=1
link(Data,4395781:Data2,[])
Primary=[6388418,-109,100]
}
Add(MST_Load,5315194,182,196)
{
MSTControl="Size-pro"
link(FileName,6896592:Var1,[(188,184)(156,184)(156,240)(125,240)])
}
Add(MST_Save,11920761,182,238)
{
MSTControl="Size-pro"
link(FileName,6896592:Var2,[(188,233)(132,233)])
}
Add(MST_SortInCol,16107846,308,224)
{
MSTControl="Size-pro"
Point(doSortDigit)
link(onChange,6152098:doEvent2,[])
}
Add(MultiElement,6896592,119,196)
{
@Color=255
link(onEvent1,5315194:doLoad,[])
link(onEvent2,11920761:doSave,[(167,209)(167,244)])
link(Data1,6388418:Var,[])
}
BEGIN_SDK
Add(EditMulti,15628907,21,21)
{
@Color=0
EventCount=2
WorkCount=1
DataCount=1
VarCount=2
Width=328
link(doWork1,8548359:doEvent,[(35,27)(35,104)])
link(Var1,15591745:Result,[(27,175)(216,175)])
link(Var2,503825:Result,[(34,200)(216,200)])
}
Add(StrCat,15591745,210,98)
{
@Color=5592575
Str2="_B.txt"
link(onStrCat,15628907:onEvent1,[(296,104)(296,27)])
}
Add(StrCat,503825,210,147)
{
@Color=5592575
Str2="_B.txt"
link(onStrCat,15628907:onEvent2,[(296,153)(296,34)])
}
Add(GetDataEx,8701971,42,39)
{
Angle=3
link(Data,15628907:Data1,[(27,44)])
}
Add(StrCat,2986072,147,147)
{
@Color=5570815
link(onStrCat,503825:doStrCat,[])
link(Str2,8701971:Var3,[(160,44)])
}
Add(StrCat,8338865,133,98)
{
@Color=5570815
link(onStrCat,15591745:doStrCat,[])
link(Str2,8701971:Var2,[(146,73)(48,73)])
}
Add(MT_IndexToChanel,8548359,49,98)
{
link(onEvent1,8338865:doStrCat,[])
link(onEvent2,2986072:doStrCat,[(114,111)(114,153)])
}
END_SDK
Add(LineBreak,717230,36,364)
{
@Hint=#38:Найденое и сконструированное имя файла|
@Color=0
Caption="TM_text"
link(Out,4848144:doData,[])
Primary=[4006446,6,-343]
}
Add(MST_RowAction,1633812,189,364)
{
MSTControl="Size-pro"
}
Add(ArrayEnum,686593,385,217)
{
link(onItem,446756:doData,[])
link(onEndEnum,2920702:In,[(454,230)(454,237)])
link(Array,4701230:Strings,[])
}
Add(MST_ArrayRows,4701230,385,173)
{
MSTControl="Size-pro"
}
Add(MTStrTbl,5728477,427,175)
{
Top=80
Width=375
Height=185
Name="Size-pro"
Columns=#1:1|
}
Add(ChangeMon,4848144,147,364)
{
@Hint=#19:Фильтр одинаковости|
link(onData,1633812:doRowAction,[])
AddHint(-113,44,129,13,@Hint)
}
Add(ChangeMon,446756,427,217)
{
@Hint=#19:Фильтр одинаковости|
link(onData,16374019:In,[])
AddHint(-72,38,129,13,@Hint)
}
Add(Hub,6152098,357,217)
{
InCount=2
OutCount=1
link(onEvent1,686593:doEnum,[])
}
Add(InfoTip,11801515,21,126)
{
Info=#9:Load/Save|
Width=211
Height=158
}
Add(InfoTip,9176671,21,294)
{
Info=#19:Вставка писка строк|24:первый уровень филтраций|
Width=211
Height=158
}
Add(InfoTip,11304052,238,126)
{
Info=#45:Начальная сортировка 2 и 3 уровень фильтраций|
Width=330
Height=158
}
Add(MST_Clear,10925508,343,175)
{
MSTControl="Size-pro"
}
Add(ComboBox,9539729,819,287)
{
Left=2
Top=15
Width=136
Height=21
Point(onMouseMove)
Point(Count)
link(onChange,6957260:doEvent2,[(867,293)(867,286)])
link(onClick,15274760:doData,[(867,300)(867,391)])
link(onMouseMove,4395781:onEvent3,[(863,307)(863,174)(575,174)(575,41)])
}
Add(DoData,15274760,882,385)
{
@Hint=#43:получение строковой составляющей для поиска|
@Color=5570815
link(onEventData,16167966:In,[])
link(Data,9539729:String,[(888,359)(832,359)])
AddHint(-56,41,136,26,@Hint)
}
Add(Hub,5558249,760,294)
{
@Color=5570815
link(onEvent1,9539729:doClear,[])
link(onEvent2,6957260:doEvent1,[(828,307)(828,279)])
}
Add(Hub,6957260,882,273)
{
InCount=2
OutCount=1
link(onEvent1,6000558:doStrCat,[(945,279)(945,370)])
}
Add(StrCat,6000558,994,364)
{
@Hint=#35:Имя состовляющей + количества строк|
@Color=5570815
link(onStrCat,10431958:doCaption,[])
link(Str1,11114155:Var,[])
link(Str2,9539729:Count,[(1007,348)(839,348)])
AddHint(-70,99,189,26,@Hint)
}
Add(LineBreak,2041488,675,280)
{
Caption="Data-строка"
link(Out,9539729:doAdd,[(792,286)(792,293)])
Primary=[14591234,-206,273]
}
Add(LineBreak,16714832,244,567)
{
Caption="End "
link(Out,11744541:doSortDigit,[])
Primary=[2920702,247,-336]
}
Add(Hub,1003012,315,511)
{
@Color=65535
InCount=2
link(onEvent1,8147895:doClear,[])
}
Add(LineBreak,15468271,237,511)
{
@Hint=#43:Задает начальную установку частей программы|
@Color=0
Caption="Активатор"
link(Out,1003012:doEvent1,[])
Primary=[2069545,261,-329]
}
Add(MST_SortInCol,11744541,308,560)
{
MSTControl="Size-pro-pro"
Point(doSortDigit)
link(onChange,1696383:doEvent2,[])
}
Add(MST_RowAction,16517851,189,532)
{
MSTControl="Size-pro-pro"
}
Add(ArrayEnum,5697670,385,553)
{
link(onItem,3033158:doData,[])
link(Array,13065808:Strings,[])
}
Add(MST_ArrayRows,13065808,385,509)
{
MSTControl="Size-pro-pro"
}
Add(MTStrTbl,7015044,427,511)
{
Top=80
Width=375
Height=185
Name="Size-pro-pro"
Columns=#1:1|
}
Add(ChangeMon,11803614,147,532)
{
@Hint=#19:Фильтр одинаковости|
link(onData,16517851:doRowAction,[])
AddHint(-113,44,129,13,@Hint)
}
Add(ChangeMon,3033158,427,553)
{
@Hint=#19:Фильтр одинаковости|
link(onData,14591234:In,[])
AddHint(-72,38,129,13,@Hint)
}
Add(Hub,1696383,357,553)
{
InCount=2
OutCount=1
link(onEvent1,5697670:doEnum,[])
}
Add(InfoTip,222301,21,462)
{
Info=#19:Вставка писка строк|24:первый уровень филтраций|
Width=211
Height=158
}
Add(InfoTip,7291502,238,462)
{
Info=#45:Начальная сортировка 2 и 3 уровень фильтраций|
Width=330
Height=158
}
Add(MST_Clear,8147895,343,511)
{
MSTControl="Size-pro-pro"
}
Add(LineBreak,16670516,223,525)
{
Caption="ОперСброс1"
link(Out,1003012:doEvent2,[(308,531)(308,524)])
Primary=[8586672,349,-187]
}
Add(Button,2952699,336,62)
{
Left=88
Top=4
Width=10
Height=10
Hint="Диалог управлением выбора категорий по поиску в колонке Size-Размер"
HintManager="прова"
link(onClick,16127904:In,[(355,68)(355,69)])
}
Add(LineBreak,3551338,308,28)
{
Caption="УсловПоискаSize"
link(Out,4395781:onEvent2,[(489,34)(489,34)])
Primary=[16127904,84,35]
}
END_SDK
Add(Hub,9602468,98,98)
{
link(onEvent1,11043801:doWork2,[])
link(onEvent2,1098126:doFor,[])
}
Add(For,1098126,126,105)
{
End=15000
link(onEvent,8873230:doRandom,[])
link(onStop,10923539:doTimer,[])
}
Add(Timer,10923539,238,112)
{
Enable=1
AutoStop=1
link(onTimer,11043801:doWork4,[])
}


Обсудите мои ошибочные действия, благодаря данной схеме скорость считывания данных уменьшилась в 1.5, а то и 3.5 раза - жуть как 'мало'
И ресурсоемко и времяемко! Данных, у меня, пока - 10229 записей. А будет больше

карма: 0

0
файлы: 1code_14962.txt [10.5KB] [591]