Вот гляжу я на этот топик, и меня начали терзать смутные сомнения..... Что то, о чем я говорил - никто не понял Судя по энтузиазму воплощения в схему, высказанной мной идеи. Тоды: это делается примерно так: Тест индексирования словаря Add(MainForm,2953706,336,77) { Width=483 Height=114 Caption="Тест индексирования словаря" } Add(Button,2823604,28,56) { Left=14 Top=14 Caption="Словарь" link(onClick,10410305:doExecute,[]) } Add(ODialog,10410305,77,56) { link(onExecute,550519:doOpen,[]) } Add(FileStream,550519,133,56) { link(onLoad,7747773:doEvent1,[]) } Add(GetDataEx,1108458,406,224) { link(Data,9769920:Pos,[]) } Add(Hub,7747773,182,56) { OutCount=5 link(onEvent1,1784996:doWork1,[(319,62)]) link(onEvent2,13093263:doStart,[]) link(onEvent3,13093263:doStop,[]) link(onEvent4,3503074:doEnabled,[(214,83)(214,111)(32,111)(32,188)]) link(onEvent5,550519:doClose,[(207,90)(207,104)(123,104)(123,69)]) } Add(DoData,9494196,665,252) { link(onEventData,3564018:doPut,[]) link(Data,13647147:ResultString,[]) } Add(Hub,9491899,147,182) { OutCount=5 link(onEvent1,9718670:doTimer,[(179,188)(179,293)]) link(onEvent2,7806628:doOpen,[]) link(onEvent3,7806628:doClose,[]) link(onEvent4,9718670:doStop,[(172,209)(172,300)]) link(onEvent5,12726438:doWork1,[(235,216)]) } Add(TimeCounter,13093263,224,63) { link(onStart,9769920:doLoad,[(375,69)(375,188)]) link(onStop,198127:doStrCatDlm,[]) } Add(For,3827780,315,189) { End=65535 link(onEvent,9769920:doHash,[]) } Add(Math,16212320,357,287) { OpType=3 Op2=655.35 ResultType=0 link(onResult,14219118:doData,[]) link(Op1,16365021:Var2,[]) } Add(InlineCode,13647147,665,189) { @Hint=#18:String Accumulator|41:для минимизации копирований и реаллокаций| WorkPoints=#6:doLoad|8:doAppend| VarPoints=#12:ResultString| Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|29: THiAsmClass = class(TDebug)|11: private|28: ByteArr:array of byte;|18: Pos:integer;|10: public|47: procedure doLoad(var dt:TData; idx:word);|49: procedure doAppend(var dt:TData; idx:word);|53: procedure ResultString(var dt:TData; idx:word);|6: end;|0:|14:implementation|0:|29:procedure THiAsmClass.doLoad;|24:var S:string; L:integer;|5:begin|20: S := ToString(dt);|17: L := length(S);|32: SetLength(ByteArr, L*3 div 2);|28: Move(S[1], ByteArr[0], L);|11: Pos := L;|4:end;|0:|31:procedure THiAsmClass.doAppend;|24:var S:string; L:integer;|5:begin|20: S := ToString(dt);|17: L := length(S);|33: if Pos+L > length(ByteArr) then|40: SetLength(ByteArr, (L+Pos)*3 div 2);|30: Move(S[1], ByteArr[Pos], L);|14: inc(Pos, L);|4:end;|0:|35:procedure THiAsmClass.ResultString;|13:var S:string;|5:begin|20: SetLength(S, Pos);|30: Move(ByteArr[0], S[1], Pos);|18: dtString(dt, S);|4:end;|0:|4:end.| AddHint(-79,-56,172,39,@Hint) } Add(StrCat,5830591,616,196) { Str1="," link(onStrCat,13647147:doAppend,[]) } Add(HubEx,12726438,231,287) { link(onEvent,13110199:doEvent1,[]) } Add(ProgressBar,4002621,476,287) { Top=55 Width=467 Align=4 ProgressColor=-16777203 } Add(Timer,9718670,189,287) { Interval=100 Enable=1 link(onTimer,12726438:doWork2,[]) } Add(FileStream,7806628,259,189) { Mode=1 link(onLoad,3827780:doFor,[]) } Add(StrCatDelim,16729616,399,343) { Delimiter=": " link(onStrCatDlm,15437502:doText,[]) link(Str1,16365021:Var3,[(405,271)]) link(Str2,1108458:Var2,[]) } Add(SDialog,2876694,91,182) { FileName="VocHash.txt" link(onExecute,9491899:doEvent1,[]) } Add(Convertor,1471636,518,189) { Mode=6 Digits=4 link(onResult,13731433:doStrCatDlm,[]) link(Data,11792470:Var1,[(524,173)(363,173)]) } Add(Hub,13110199,287,287) { link(onEvent1,16212320:doOperation,[]) link(onEvent2,16729616:doStrCatDlm,[(312,300)(312,349)]) } Add(Label,15437502,476,343) { Left=217 Top=14 Width=32 Height=22 Font=[MS Sans Serif,10,0,0,1] Caption="0000" } Add(Button,3503074,42,182) { Left=91 Top=14 Width=69 Enabled=1 Caption="в ТЕКСТ" Point(doEnabled) link(onClick,2876694:doExecute,[]) } Add(ChangeMon,14219118,427,287) { link(onData,4002621:doPosition,[]) } Add(StrCatDelim,13731433,567,189) { Delimiter=": " link(onStrCatDlm,13647147:doLoad,[]) link(Str2,1108458:Var3,[(580,180)(559,180)(559,229)]) } Add(DataToFileEx,3564018,714,245) { Type=4 DataSize=2 Point(doPosition) link(Stream,7806628:Stream,[(720,236)(265,236)]) } Add(GetDataEx,11792470,357,224) { Angle=3 link(Data,3827780:Position,[(321,229)]) } Add(GetDataEx,16365021,357,266) { link(Data,11792470:Var2,[]) } Add(MultiElementEx,9769920,399,182) { @Hint=#74:Словарь, индексированный по первым двум байтам последовательности символов| Name="Hash" link(onFirstPos,8703109:doEvent1,[]) link(onNextPos,9275719:doEvent1,[]) link(onEndList,9494196:doData,[(438,202)(438,258)]) AddHint(-5,-114,174,39,@Hint) } BEGIN_SDK Add(EditMultiEx,10199030,21,21) { WorkCount=#34:doLoad=Загрузка+Индексация словаря|102:doHash=Поиск позиций в словаре, соответствующих ключу (два первых байта последовательности, как целое)|32:doStop=Преждевременная остановка| EventCount=#64:onFirstPos=Вход в список позиций для ключа, заданного по doHash |60:onNextPos=Последующие позиции для ключа, заданного по doHash|78:onEndList=Сообщение об окончании списка позиций для ключа, заданного по doHash| VarCount=#134:VocStream=Загруженный по doLoad словарь, предустановленный (для удобства дальнейших сравнений) сразу после найденных по doHash позиций|88:Pos=Позиция в словаре при активизации выходов onFirstPos и onNextPos (в ответ на doHash)| Width=426 Height=382 VOffset=287 HOffset=224 link(doLoad,2204106:doCopy,[(32,314)(32,118)]) link(doHash,3991985:doRead,[(39,321)(39,307)]) link(doStop,4635615:doWork2,[(60,328)(60,363)]) link(VocStream,13641125:Var3,[(251,187)]) link(Pos,2630774:Var1,[(258,306)]) } Add(ArrayRW,3123448,294,203) { link(onRead,314531:doWrite,[]) link(Array,1903610:Var2,[]) link(Value,14531255:Var2,[]) } Add(MemoryStream,2204106,49,112) { link(onCopy,15738292:doOperation,[]) } Add(For,13673247,105,217) { Step=-1 InData=0 link(onEvent,4247253:doEvent1,[]) } Add(Hub,4247253,154,217) { link(onEvent1,12366427:doWork2,[]) link(onEvent2,8348129:doGet,[(179,230)(179,209)]) } Add(DataToFileEx,8348129,196,203) { DataSize=2 Point(doPosition) link(onGet,12097523:doEvent1,[]) link(Stream,13641125:Var2,[]) } Add(InlineCode,9964384,294,56) { @Hint=#13:Integer Array|19:- Entry to HashList| WorkPoints=#9:doSetSize|8:doMemSet| VarPoints=#12:IntegerArray| Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|29: THiAsmClass = class(TDebug)|11: private|27: IntArr:array of integer;|15: Arr:TXArray;|52: procedure _Set(var Item:TData; var Val:TData);|36: procedure _Add(var Val:TData);|60: function _Get(Var Item:TData; var Val:TData):boolean;|31: function _Count:integer;|10: public|22: constructor Create;|47: procedure doSetSize(var dt:TData; idx:word);|46: procedure doMemSet(var dt:TData; idx:word);|53: procedure IntegerArray(var dt:TData; idx:word);|6: end;|0:|14:implementation|0:|31:constructor THiAsmClass.Create;|5:begin|12: inherited;|21: Arr._Set := _Set;|21: Arr._Add := _Add;|21: Arr._Get := _Get;|22: Arr._Count := _Count|4:end;|0:|27:procedure THiAsmClass._Set;|16:var ind:integer;|5:begin|27: ind := ToIntIndex(Item);|46: if (ind >= 0)and(ind < length(IntArr)) then|36: IntArr[ind] := ToInteger(Val);|4:end;|0:|27:procedure THiAsmClass._Add;|5:begin|39: SetLength(IntArr, length(IntArr)+1);|42: IntArr[high(IntArr)] := ToInteger(Val);|4:end;|0:|26:function THiAsmClass._Get;|16:var ind:integer;|5:begin|27: ind := ToIntIndex(Item);|49: Result := (ind >= 0)and(ind < length(IntArr));|46: if Result then dtInteger(Val, IntArr[ind]);|4:end;|0:|28:function THiAsmClass._Count;|5:begin|28: Result := length(IntArr);|4:end;|0:|32:procedure THiAsmClass.doSetSize;|5:begin|35: SetLength(IntArr, ToInteger(dt));|4:end;|0:|31:procedure THiAsmClass.doMemSet;|16:var i,m:integer;|5:begin|21: m := ToInteger(dt);|31: for i := 0 to high(IntArr) do|19: IntArr[i] := m;|4:end;|0:|35:procedure THiAsmClass.IntegerArray;|5:begin|20: dtArray(dt, @Arr);|4:end;|0:|4:end.| @IsLib=True AddHint(37,-2,86,26,@Hint) } Add(Math,15738292,105,112) { OpType=1 Op2=1 ResultType=0 link(onResult,7061963:doEvent1,[]) link(Op1,2204106:Size,[(111,103)(97,103)(97,152)(62,152)]) } Add(InlineCode,6030611,350,119) { @Hint=#13:Integer Array|18:- Tail of HashList| elink(9964384) AddHint(-18,-33,79,26,@Hint) } Add(ArrayRW,314531,350,196) { link(Array,13276856:Var2,[]) link(Index,14531255:Var3,[(363,187)]) } Add(Hub,12097523,266,203) { link(onEvent1,3123448:doRead,[]) link(onEvent2,3123448:doWrite,[]) } Add(GetDataEx,14531255,308,182) { Angle=3 link(Data,13673247:Position,[(258,187)(258,257)(111,257)]) } Add(Timer,3315013,105,56) { @Hint=#10:Start INIT| Interval=0 AutoStop=1 link(onTimer,8483149:doData,[]) AddHint(-19,-22,61,13,@Hint) } Add(DoData,8483149,182,56) { @Hint=#6:$10000| Data=Integer(65536) link(onEventData,9964384:doSetSize,[]) AddHint(-14,-22,51,13,@Hint) } Add(Hub,7061963,154,112) { OutCount=3 link(onEvent1,12237287:doData,[(221,118)(221,69)]) link(onEvent2,6030611:doSetSize,[]) link(onEvent3,6037519:doOperation,[(179,132)(179,202)(46,202)(46,223)]) } Add(DoData,12237287,238,63) { Data=Integer(-1) link(onEventData,9964384:doMemSet,[]) AddHint(0,-29,24,13,Data) } Add(GetDataEx,1903610,294,154) { link(Data,9964384:IntegerArray,[]) } Add(If_else,2046476,119,301) { Type=4 Op2=Integer(0) link(onTrue,14186977:doEvent1,[]) } Add(Repeat,1024522,210,322) { link(onRepeat,11909561:doRead,[]) } Add(ArrayRW,11909561,266,322) { link(onRead,15153304:doCompare,[]) link(Array,13276856:Var3,[(272,166)]) link(Index,2630774:Var2,[]) } Add(GetDataEx,13276856,350,161) { link(Data,6030611:IntegerArray,[]) } Add(If_else,15153304,322,322) { Type=4 Op2=Integer(0) link(onTrue,3557159:doEvent1,[]) link(onFalse,4635615:doWork1,[(361,335)(361,363)]) } Add(Memory,9048510,273,259) { link(onData,7181297:doOperation,[]) } Add(Hub,3557159,371,322) { link(onEvent1,16340614:doWork3,[(396,328)(396,300)(256,300)]) link(onEvent2,10199030:onNextPos,[(403,335)(403,321)]) } Add(HubEx,16340614,252,259) { link(onEvent,9048510:doValue,[]) } Add(GetDataEx,2630774,273,301) { link(Data,9048510:Value,[]) } Add(Math,6037519,56,217) { OpType=1 Op2=1 ResultType=0 link(onResult,13673247:doFor,[]) } Add(ArrayRW,3991985,70,301) { link(onRead,2046476:doCompare,[]) link(Array,1903610:Var1,[(76,159)]) } Add(Hub,14186977,168,301) { OutCount=4 link(onEvent1,16340614:doWork2,[(200,307)(200,265)]) link(onEvent2,10199030:onFirstPos,[]) link(onEvent3,1024522:doRepeat,[(200,321)(200,328)]) link(onEvent4,10199030:onEndList,[(193,328)(193,370)(410,370)(410,328)]) } Add(GetDataEx,13641125,196,182) { Angle=3 link(Data,2204106:Stream,[(55,187)]) } Add(Math,7181297,322,259) { Op2=2 ResultType=0 link(onResult,12366427:doWork3,[(361,265)(361,251)(186,251)]) } Add(HubEx,12366427,182,217) { link(onEvent,8348129:doPosition,[]) } Add(HubEx,4635615,196,357) { Angle=3 link(onEvent,1024522:doStop,[(200,335)]) } END_SDK Add(Hub,9275719,448,189) { link(onEvent1,6729505:doWork2,[(473,195)(473,139)]) link(onEvent2,5830591:doStrCat,[]) } Add(Hub,8703109,483,182) { link(onEvent1,6729505:doWork3,[(508,188)]) link(onEvent2,1471636:doConvert,[]) } Add(Application,6093389,518,133) { Wait=1 Point(onTerminate) link(onTerminate,9129885:doWork3,[(557,139)(557,125)]) } Add(Hub,11711312,280,154) { link(onEvent1,9769920:doStop,[(368,160)(368,202)]) link(onEvent2,3827780:doStop,[(305,167)(305,202)]) } Add(Button,15189132,42,119) { Left=168 Top=14 Width=34 Caption="Стоп" link(onClick,9129885:doWork2,[]) } Add(StrCatDelim,198127,273,70) { Str1="Время загрузки/индексации " Str2=" мсек" link(onStrCatDlm,1784996:doWork2,[]) } Add(HubEx,9129885,266,119) { Angle=1 link(onEvent,11711312:doEvent1,[(270,160)]) } Add(HubEx,6729505,504,133) { link(onEvent,6093389:doProcessMessages,[]) } Add(HubEx,1784996,315,70) { Angle=1 link(onEvent,2953706:doCaption,[(319,83)]) }
Поиск в индексированном словаре Add(Label,1824696,798,112) { @Hint=#23:Чтоб никто не догадался| Width=430 Height=43 Align=2 Caption="" AutoSize=1 AddHint(-59,-23,143,13,@Hint) } Add(MainForm,14415943,336,56) { Width=446 Height=457 Caption="Поиск в индексированном словаре" } Add(Button,2823604,28,35) { Left=14 Top=14 Caption="Словарь" link(onClick,10410305:doExecute,[]) } Add(ODialog,10410305,70,35) { link(onExecute,550519:doOpen,[]) } Add(FileStream,550519,119,35) { link(onLoad,7747773:doEvent1,[]) } Add(Hub,7747773,168,35) { OutCount=5 link(onEvent1,16091653:doWork1,[(319,41)]) link(onEvent2,13093263:doStart,[]) link(onEvent3,13093263:doStop,[]) link(onEvent4,3503074:doEnabled,[(200,62)(200,90)(32,90)(32,167)]) link(onEvent5,550519:doClose,[(193,69)(193,83)(109,83)(109,48)]) } Add(TimeCounter,13093263,224,42) { link(onStart,9769920:doLoad,[(445,48)(445,160)]) link(onStop,198127:doStrCatDlm,[]) } Add(For,3827780,315,175) { IncludeEnd=1 link(onEvent,180655:doEvent1,[]) link(End,161234:Var1,[(328,166)(293,166)]) } Add(Math,16212320,315,336) { OpType=3 link(onResult,16582522:doOperation,[]) link(Op1,15696705:Var2,[]) link(Op2,161234:Var3,[(328,222)]) } Add(ProgressBar,4002621,511,336) { Top=398 Width=430 Align=4 ProgressColor=-16777203 } Add(Timer,9718670,231,336) { Interval=100 Enable=1 link(onTimer,13110199:doEvent1,[]) } Add(FileStream,7806628,133,161) { link(onLoad,15415920:doEvent1,[]) } Add(StrCatDelim,16729616,462,378) { Delimiter=": " link(onStrCatDlm,15437502:doText,[]) link(Str1,2816362:Var2,[]) link(Str2,9769920:Pos,[]) } Add(Hub,13110199,280,336) { link(onEvent1,16212320:doOperation,[]) link(onEvent2,16729616:doStrCatDlm,[(305,349)(305,384)]) } Add(Label,15437502,511,378) { Left=301 Top=14 Width=32 Height=22 Font=[MS Sans Serif,10,0,0,1] Caption="0000" } Add(Button,3503074,42,161) { Left=91 Top=14 Width=69 Enabled=1 Caption="Поиск в..." Point(doEnabled) link(onClick,3944805:doExecute,[]) } Add(ChangeMon,14219118,413,336) { link(onData,4002621:doPosition,[]) } Add(MultiElementEx,9769920,462,154) { @Hint=#74:Словарь, индексированный по первым двум байтам последовательности символов| Name="Hash" link(onFirstPos,8703109:doEvent1,[]) link(onNextPos,9275719:doEvent1,[]) AddHint(-3,-114,174,39,@Hint) } BEGIN_SDK Add(EditMultiEx,10199030,21,21) { WorkCount=#34:doLoad=Загрузка+Индексация словаря|102:doHash=Поиск позиций в словаре, соответствующих ключу (два первых байта последовательности, как целое)|32:doStop=Преждевременная остановка| EventCount=#64:onFirstPos=Вход в список позиций для ключа, заданного по doHash |60:onNextPos=Последующие позиции для ключа, заданного по doHash|78:onEndList=Сообщение об окончании списка позиций для ключа, заданного по doHash| VarCount=#134:VocStream=Загруженный по doLoad словарь, предустановленный (для удобства дальнейших сравнений) сразу после найденных по doHash позиций|88:Pos=Позиция в словаре при активизации выходов onFirstPos и onNextPos (в ответ на doHash)| Width=426 Height=382 VOffset=287 HOffset=224 link(doLoad,2204106:doCopy,[(32,314)(32,118)]) link(doHash,3991985:doRead,[(39,321)(39,307)]) link(doStop,4635615:doWork2,[(60,328)(60,363)]) link(VocStream,13641125:Var3,[(251,187)]) link(Pos,2630774:Var1,[(258,306)]) } Add(ArrayRW,3123448,294,203) { link(onRead,314531:doWrite,[]) link(Array,1903610:Var2,[]) link(Value,14531255:Var2,[]) } Add(MemoryStream,2204106,49,112) { link(onCopy,15738292:doOperation,[]) } Add(For,13673247,105,217) { Step=-1 InData=0 link(onEvent,4247253:doEvent1,[]) } Add(Hub,4247253,154,217) { link(onEvent1,12366427:doWork2,[]) link(onEvent2,8348129:doGet,[(179,230)(179,209)]) } Add(DataToFileEx,8348129,196,203) { DataSize=2 Point(doPosition) link(onGet,12097523:doEvent1,[]) link(Stream,13641125:Var2,[]) } Add(InlineCode,9964384,294,56) { @Hint=#13:Integer Array|19:- Entry to HashList| WorkPoints=#9:doSetSize|8:doMemSet| VarPoints=#12:IntegerArray| Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|29: THiAsmClass = class(TDebug)|11: private|27: IntArr:array of integer;|15: Arr:TXArray;|52: procedure _Set(var Item:TData; var Val:TData);|36: procedure _Add(var Val:TData);|60: function _Get(Var Item:TData; var Val:TData):boolean;|31: function _Count:integer;|10: public|22: constructor Create;|47: procedure doSetSize(var dt:TData; idx:word);|46: procedure doMemSet(var dt:TData; idx:word);|53: procedure IntegerArray(var dt:TData; idx:word);|6: end;|0:|14:implementation|0:|31:constructor THiAsmClass.Create;|5:begin|12: inherited;|21: Arr._Set := _Set;|21: Arr._Add := _Add;|21: Arr._Get := _Get;|22: Arr._Count := _Count|4:end;|0:|27:procedure THiAsmClass._Set;|16:var ind:integer;|5:begin|27: ind := ToIntIndex(Item);|46: if (ind >= 0)and(ind < length(IntArr)) then|36: IntArr[ind] := ToInteger(Val);|4:end;|0:|27:procedure THiAsmClass._Add;|5:begin|39: SetLength(IntArr, length(IntArr)+1);|42: IntArr[high(IntArr)] := ToInteger(Val);|4:end;|0:|26:function THiAsmClass._Get;|16:var ind:integer;|5:begin|27: ind := ToIntIndex(Item);|49: Result := (ind >= 0)and(ind < length(IntArr));|46: if Result then dtInteger(Val, IntArr[ind]);|4:end;|0:|28:function THiAsmClass._Count;|5:begin|28: Result := length(IntArr);|4:end;|0:|32:procedure THiAsmClass.doSetSize;|5:begin|35: SetLength(IntArr, ToInteger(dt));|4:end;|0:|31:procedure THiAsmClass.doMemSet;|16:var i,m:integer;|5:begin|21: m := ToInteger(dt);|31: for i := 0 to high(IntArr) do|19: IntArr[i] := m;|4:end;|0:|35:procedure THiAsmClass.IntegerArray;|5:begin|20: dtArray(dt, @Arr);|4:end;|0:|4:end.| @IsLib=True AddHint(37,-2,86,26,@Hint) } Add(Math,15738292,105,112) { OpType=1 Op2=1 ResultType=0 link(onResult,7061963:doEvent1,[]) link(Op1,2204106:Size,[(111,103)(97,103)(97,152)(62,152)]) } Add(InlineCode,6030611,350,119) { @Hint=#13:Integer Array|18:- Tail of HashList| elink(9964384) AddHint(-18,-33,79,26,@Hint) } Add(ArrayRW,314531,350,196) { link(Array,13276856:Var2,[]) link(Index,14531255:Var3,[(363,187)]) } Add(Hub,12097523,266,203) { link(onEvent1,3123448:doRead,[]) link(onEvent2,3123448:doWrite,[]) } Add(GetDataEx,14531255,308,182) { Angle=3 link(Data,13673247:Position,[(258,187)(258,257)(111,257)]) } Add(Timer,3315013,105,56) { @Hint=#10:Start INIT| Interval=0 AutoStop=1 link(onTimer,8483149:doData,[]) AddHint(-19,-22,61,13,@Hint) } Add(DoData,8483149,182,56) { @Hint=#6:$10000| Data=Integer(65536) link(onEventData,9964384:doSetSize,[]) AddHint(-14,-22,51,13,@Hint) } Add(Hub,7061963,154,112) { OutCount=3 link(onEvent1,12237287:doData,[(221,118)(221,69)]) link(onEvent2,6030611:doSetSize,[]) link(onEvent3,6037519:doOperation,[(179,132)(179,202)(46,202)(46,223)]) } Add(DoData,12237287,238,63) { Data=Integer(-1) link(onEventData,9964384:doMemSet,[]) AddHint(0,-29,24,13,Data) } Add(GetDataEx,1903610,294,154) { link(Data,9964384:IntegerArray,[]) } Add(If_else,2046476,119,301) { Type=4 Op2=Integer(0) link(onTrue,14186977:doEvent1,[]) } Add(Repeat,1024522,210,322) { link(onRepeat,11909561:doRead,[]) } Add(ArrayRW,11909561,266,322) { link(onRead,15153304:doCompare,[]) link(Array,13276856:Var3,[(272,166)]) link(Index,2630774:Var2,[]) } Add(GetDataEx,13276856,350,161) { link(Data,6030611:IntegerArray,[]) } Add(If_else,15153304,322,322) { Type=4 Op2=Integer(0) link(onTrue,3557159:doEvent1,[]) link(onFalse,4635615:doWork1,[(361,335)(361,363)]) } Add(Memory,9048510,273,259) { link(onData,7181297:doOperation,[]) } Add(Hub,3557159,371,322) { link(onEvent1,16340614:doWork3,[(396,328)(396,300)(256,300)]) link(onEvent2,10199030:onNextPos,[(403,335)(403,321)]) } Add(HubEx,16340614,252,259) { link(onEvent,9048510:doValue,[]) } Add(GetDataEx,2630774,273,301) { link(Data,9048510:Value,[]) } Add(Math,6037519,56,217) { OpType=1 Op2=1 ResultType=0 link(onResult,13673247:doFor,[]) } Add(ArrayRW,3991985,70,301) { link(onRead,2046476:doCompare,[]) link(Array,1903610:Var1,[(76,159)]) } Add(Hub,14186977,168,301) { OutCount=4 link(onEvent1,16340614:doWork2,[(200,307)(200,265)]) link(onEvent2,10199030:onFirstPos,[]) link(onEvent3,1024522:doRepeat,[(200,321)(200,328)]) link(onEvent4,10199030:onEndList,[(193,328)(193,370)(410,370)(410,328)]) } Add(GetDataEx,13641125,196,182) { Angle=3 link(Data,2204106:Stream,[(55,187)]) } Add(Math,7181297,322,259) { Op2=2 ResultType=0 link(onResult,12366427:doWork3,[(361,265)(361,251)(186,251)]) } Add(HubEx,12366427,182,217) { link(onEvent,8348129:doPosition,[]) } Add(HubEx,4635615,196,357) { Angle=3 link(onEvent,1024522:doStop,[(200,335)]) } END_SDK Add(Hub,9275719,511,161) { OutCount=3 link(onEvent1,12827354:doWork2,[(541,167)(541,118)]) link(onEvent2,3779604:doData,[(543,174)(543,209)]) link(onEvent3,598827:doWork2,[(536,181)(536,258)]) } Add(Hub,8703109,553,154) { OutCount=3 link(onEvent1,12827354:doWork3,[(578,160)]) link(onEvent2,9787654:doValue,[]) link(onEvent3,598827:doWork1,[(578,174)]) } Add(Application,6093389,595,112) { Wait=1 Point(onTerminate) link(onTerminate,9129885:doWork3,[(634,118)(634,104)]) } Add(Hub,11711312,273,140) { link(onEvent1,9769920:doStop,[(438,146)(438,174)]) link(onEvent2,3827780:doStop,[(298,153)(298,188)]) } Add(Button,15189132,42,98) { Left=252 Top=14 Width=34 Caption="Стоп" link(onClick,9129885:doWork2,[]) } Add(StrCatDelim,198127,273,49) { Str1="Время загрузки/индексации " Str2=" мсек" link(onStrCatDlm,16091653:doWork2,[]) } Add(HubEx,9129885,252,98) { Angle=1 link(onEvent,11711312:doEvent1,[(256,146)]) } Add(ODialog,3944805,84,161) { Title="Save Dialog" link(onExecute,7806628:doOpen,[]) } Add(MemoryStream,7170827,245,175) { link(onCopy,3827780:doFor,[]) } Add(DataToFileEx,4127981,399,161) { DataSize=2 Point(doPosition) link(onGet,9769920:doHash,[]) link(Stream,6157586:Var2,[]) } Add(Hub,180655,364,175) { link(onEvent1,4127981:doPosition,[]) link(onEvent2,4127981:doGet,[(389,188)(389,167)]) } Add(Hub,15415920,182,161) { OutCount=5 link(onEvent1,14010202:doClear,[(228,167)(228,321)]) link(onEvent2,9718670:doTimer,[(221,174)(221,342)]) link(onEvent3,7170827:doCopy,[]) link(onEvent4,9718670:doStop,[(214,188)(214,349)]) link(onEvent5,7806628:doClose,[(207,195)(207,209)(123,209)(123,174)]) } Add(Math,16582522,364,336) { OpType=2 Op2=100 ResultType=0 link(onResult,14219118:doData,[]) } Add(HubEx,12827354,574,112) { link(onEvent,6093389:doProcessMessages,[]) } Add(Memory,9787654,595,161) { Point(Data) link(Data,4978821:Position,[(601,152)(636,152)(636,236)(748,236)]) } Add(DataToFileEx,4978821,735,189) { Point(Position) Point(doPosition) link(Stream,6157586:Var3,[(741,138)]) } Add(DoData,3779604,595,203) { link(onEventData,4978821:doPosition,[]) link(Data,9787654:Value,[]) } Add(GetDataEx,6157586,399,133) { Angle=3 link(Data,7170827:Stream,[(356,138)(356,215)(251,215)]) } Add(Repeat,13622019,637,259) { link(onRepeat,1662931:doGet,[]) } Add(DataToFileEx,1662931,686,259) { Point(onRdError) Point(Position) link(onGet,11436920:doCompare,[]) link(Stream,9769920:VocStream,[(692,243)(468,243)]) link(onRdError,15482775:doWork1,[(725,272)]) } Add(If_else,11436920,735,259) { link(onTrue,16690597:doNext,[(774,265)(774,244)]) link(onFalse,15482775:doWork2,[(774,272)(774,300)]) link(Op1,4978821:Data,[]) } Add(HubEx,15482775,721,294) { Angle=2 link(onEvent,13622019:doStop,[(627,300)(627,272)]) } Add(CounterEx,16690597,791,238) { Min=2 Max=1000000 Default=2 Point(doReset) } Add(Hub,1010477,595,252) { OutCount=3 link(onEvent1,16690597:doReset,[(620,258)(620,251)]) link(onEvent2,13622019:doRepeat,[]) link(onEvent3,204999:doCompare,[(620,272)(620,335)]) } Add(HubEx,598827,574,252) { link(onEvent,1010477:doEvent1,[]) } Add(If_else,204999,791,329) { Type=4 link(onTrue,8234335:doString,[]) link(Op1,11624451:Var2,[]) link(Op2,3089555:Value,[(804,278)(846,278)]) } Add(Edit,15507716,798,189) { Left=182 Top=14 Width=57 Hint="Минимальная длина для вывода в таблицу" Text="4" Alignment=1 DataType=1 link(onChange,3089555:doValue,[]) } Add(StringTable,14010202,959,308) { Top=43 Width=430 Height=355 Align=5 Columns=#15:Поз.Образца=140|15:Поз.Словаря=140|9:Длина=129| Point(doSelect) Point(doEnsureVisible) } Add(FormatStr,8234335,840,329) { DataCount=3 Mask="%1;%2;%3" link(onFString,8212874:doEvent1,[]) link(Str1,2816362:Var3,[(846,313)]) link(Str3,11624451:Var3,[(860,306)]) } Add(GetDataEx,15696705,315,308) { link(Data,3827780:Position,[]) } Add(GetDataEx,161234,287,217) { Angle=3 link(Data,7170827:Size,[(258,222)]) } Add(HubEx,16091653,315,49) { Angle=1 link(onEvent,14415943:doCaption,[(319,62)]) } Add(Hub,8212874,882,329) { link(onEvent1,14010202:doAdd,[(907,335)(907,314)]) link(onEvent2,12094826:doOperation,[]) } Add(Math,12094826,910,336) { OpType=1 Op2=1 ResultType=0 link(onResult,14010202:doEnsureVisible,[]) link(Op1,14010202:Count,[(916,327)(951,327)(951,355)(965,355)]) } Add(GetDataEx,2816362,462,308) { Angle=3 link(Data,15696705:Var3,[]) } Add(GetDataEx,11624451,791,301) { link(Data,16690597:Count,[]) } Add(Memory,3089555,840,189) { Default=Integer(4) }
Леонид писал(а): ... никакого терпения не хватит, у меня вот не хватило на сравнение двух файлов 1 и 0.5 Мб, пришлось останавливать А у меня вот хватило Сканирование аналогичных файлов (байты из RND-генератора) заняло ~ 2 минуты. Заявленные 1Мб и 128Кб сканируются ~ 30 сек, соответственно.
О как А то: пента.... тера.... гига.... Редактировалось 6 раз(а), последний 2020-03-14 15:55:17
|