Вверх ↑
Этот топик читают: Гость
Ответов: 188
Рейтинг: 2
#16: 2020-01-04 02:07:22 ЛС | профиль | цитата
Кстати а почему перестает работать схема(поиск и замена не происходит ) как только добавляешь часть схемы после FileStream

Add(FileStream,3591058,693,231)
{
Mode=2
AutoCopy=0
Point(doPosition)
Point(doCopyFromStream)
link(onLoad,15142878:doConvert,[(803,237)(803,251)])
}
Add(Hub,7672151,567,231)
{
OutCount=5
link(onEvent1,3591058:doOpen,[])
link(onEvent2,7563050:In,[])
link(onEvent3,7228710:doFor,[(609,251)(609,433)])
link(onEvent4,3591058:doClose,[(637,258)(637,244)])
link(onEvent5,5887358:doMessage,[(605,265)(605,699)])
}
Add(DropFile,7368331,343,273)
{
link(onDropFile,7672151:doEvent1,[(471,279)(471,237)])
}
Add(Message,5707167,994,539)
{
Message="Замена произведена"
Caption="ОК"
}
Add(Convertor,7177771,840,427)
{
Mode=6
Digits=8
link(onResult,7695569:doCompare,[])
}
Add(DataToFileEx,15470337,791,427)
{
DataSize=4
BigEndian=0
link(onGet,7177771:doConvert,[])
link(Stream,3591058:Stream,[(797,342)(699,342)])
}
Add(If_else,7695569,889,427)
{
Op2=String(003D0BF6)
link(onTrue,7104584:doEvent1,[])
link(onFalse,13499098:doOperation,[(940,440)(940,636)])
AddHint(-32,41,76,13,Op2)
}
Add(Math,6335570,994,427)
{
OpType=1
Op2=4
ResultType=0
link(onResult,15485465:In,[])
link(Op1,13430363:Var,[])
}
Add(GetDataEx,9490686,707,273)
{
link(Data,3591058:Position,[])
}
Add(LineBreak,2178995,721,287)
{
Caption="pos"
Type=1
link(Data,14807262:Var2,[])
Primary=[13430363,273,112]
}
Add(LineBreak,15146409,644,245)
{
Caption="pos"
link(Out,1809828:doWork2,[])
Primary=[15485465,392,182]
}
Add(DoData,13926188,994,476)
{
Data=String(000D0AF6)
link(onEventData,12148725:doConvert,[])
AddHint(47,44,76,13,Data)
}
Add(Hub,7104584,959,427)
{
OutCount=3
link(onEvent1,6335570:doOperation,[])
link(onEvent2,13926188:doData,[(986,440)(986,482)])
link(onEvent3,5707167:doMessage,[(981,447)(981,545)])
}
Add(Convertor,12148725,1036,476)
{
Mode=5
Digits=8
link(onResult,12572938:In,[])
}
Add(LineBreak,3188892,749,434)
{
link(Out,15470337:doPut,[])
Primary=[12572938,329,42]
}
Add(Math,13499098,987,630)
{
OpType=1
Op2=3
ResultType=0
link(onResult,8372668:In,[])
link(Op1,287188:Var,[])
}
Add(GetDataEx,14807262,721,273)
{
Angle=3
link(Data,9490686:Var3,[])
}
Add(LineBreak,4454670,756,287)
{
Caption="pos"
Type=1
link(Data,10305145:Var2,[(762,291)(741,291)])
Primary=[287188,231,315]
}
Add(HubEx,1809828,679,245)
{
link(onEvent,3591058:doPosition,[])
}
Add(LineBreak,12016588,644,266)
{
Caption="pos"
link(Out,1809828:doWork3,[(683,272)])
Primary=[8372668,385,364]
}
Add(Hub,15386543,686,427)
{
InCount=2
OutCount=3
link(onEvent1,15470337:doGet,[])
link(onEvent2,12255921:doWork2,[(742,440)(742,524)])
link(onEvent3,6264518:doProcessMessages,[(721,447)(721,573)])
}
Add(GetDataEx,10305145,735,273)
{
Angle=3
link(Data,14807262:Var3,[])
}
Add(Application,6264518,742,567)
{
Wait=1
}
Add(GetDataEx,5130241,700,301)
{
link(Data,3591058:Size,[])
}
Add(For,7228710,637,427)
{
IncludeEnd=1
link(onEvent,15386543:doEvent1,[])
link(End,1149433:Var,[])
}
Add(Message,5887358,630,693)
{
Message="Всё!"
link(onMessage,5773352:doData,[])
}
Add(ProgressBar,10016673,847,511)
{
Left=5
Top=35
Width=380
Smooth=1
Point(doMax)
}
Add(MultiElementEx,10431564,798,511)
{
link(onEventData,10016673:doPosition,[])
link(cnt1,10016673:doMax,[])
link(cnt,13369395:Var,[])
}
BEGIN_SDK
Add(EditMultiEx,5196661,21,21)
{
WorkCount=#6:doData|7:doValue|
EventCount=#11:onEventData|4:cnt1|
DataCount=#3:cnt|3:Op1|
HOffset=70
link(doData,14513411:doData,[(45,27)(45,90)])
link(doValue,8562347:doValue,[(42,34)(42,153)])
}
Add(DoData,14513411,70,84)
{
link(onEventData,5196661:cnt1,[(212,90)(212,34)])
link(Data,5196661:cnt,[(76,52)(97,52)])
}
Add(Memory,8562347,63,147)
{
link(onData,1263160:doOperation,[])
}
Add(Math,1263160,112,147)
{
OpType=8
Op2=1000
ResultType=0
link(onResult,10096636:doCase,[])
}
Add(Case,10096636,161,147)
{
link(onTrue,9465062:doData,[])
}
Add(DoData,9465062,210,154)
{
link(onEventData,5196661:onEventData,[(282,160)(282,27)])
link(Data,8562347:Value,[(216,142)(142,142)(142,191)(69,191)])
}
END_SDK
Add(LineBreak,13681297,749,511)
{
link(Out,10431564:doData,[])
Primary=[7563050,-154,-273]
}
Add(LineBreak,14105995,700,315)
{
Caption="cnt"
Type=1
link(Data,5130241:Var2,[])
Primary=[13369395,98,168]
}
Add(LineBreak,14307266,714,315)
{
Caption="cnt"
Type=1
link(Data,5130241:Var3,[(720,306)])
Primary=[1149433,-70,84]
}
Add(DoData,5773352,672,693)
{
Data=Integer(0)
link(onEventData,2586497:In,[])
}
Add(HubEx,12255921,784,518)
{
link(onEvent,10431564:doValue,[])
}
Add(LineBreak,5133177,749,532)
{
link(Out,12255921:doWork3,[(788,538)])
Primary=[2586497,-35,161]
}
Add(StreamConvertor,15142878,882,245)
{
Point(Data)
link(onResult,8206227:doEvent1,[])
}
Add(Hub,8206227,938,245)
{
link(onEvent1,10256155:doText,[(976,251)(976,216)])
link(onEvent2,5383138:doSearch,[(973,258)(973,251)])
}
Add(GetDataEx,5639363,1001,231)
{
link(Data,10256155:Text,[])
}
Add(Position,5383138,1001,245)
{
Target="003D0BF6"
ZeroPos=0
link(onSearch,12930397:doMessage,[])
link(Str,5639363:Var2,[])
}
Add(StrList,10256155,1001,189)
{
}
Add(Message,12930397,1085,245)
{
}

карма: 0

0
Ответов: 1925
Рейтинг: 172
#17: 2020-01-04 06:27:02 ЛС | профиль | цитата
zhorik5 писал(а):
почему перестает работать схема(поиск и замена не происходит ) как только добавляешь часть схемы после FileStream

Потому что StreamConvertor читает файловый поток перед конвертированием, и это сдвигает указатель в самый конец файлового потока. Поэтому после конвертирования возвращаем позицию указателя в ноль.
Add(MainForm,2953706,84,84)
{
Position=1
}
Add(FileStream,3591058,553,175)
{
Mode=2
AutoCopy=0
Point(doPosition)
Point(doCopyFromStream)
link(onLoad,15142878:doConvert,[(663,181)(663,195)])
}
Add(Hub,7672151,399,175)
{
OutCount=6
link(onEvent1,3591058:doOpen,[])
link(onEvent2,7563050:In,[])
link(onEvent3,386121:doData,[(459,195)(459,328)])
link(onEvent4,7228710:doFor,[(455,202)(455,419)])
link(onEvent5,15067525:In,[])
link(onEvent6,5887358:doMessage,[(451,216)(451,685)])
}
Add(DropFile,7368331,175,217)
{
link(onDropFile,7672151:doEvent1,[(303,223)(303,181)])
}
Add(Message,5707167,854,525)
{
Message="Замена произведена"
Caption="ОК"
}
Add(Convertor,7177771,700,413)
{
Mode=6
Digits=8
link(onResult,7695569:doCompare,[])
}
Add(DataToFileEx,15470337,651,413)
{
DataSize=4
BigEndian=0
link(onGet,7177771:doConvert,[])
link(Stream,3591058:Stream,[(657,286)(559,286)])
}
Add(If_else,7695569,749,413)
{
Op2=String(003D0BF6)
link(onTrue,7104584:doEvent1,[])
link(onFalse,13499098:doOperation,[(800,426)(800,622)])
AddHint(-32,41,76,13,Op2)
}
Add(Math,6335570,854,413)
{
OpType=1
Op2=4
ResultType=0
link(onResult,15485465:In,[])
link(Op1,13430363:Var,[])
}
Add(GetDataEx,9490686,567,217)
{
link(Data,3591058:Position,[])
}
Add(LineBreak,14536235,581,231)
{
Caption="pos"
Type=1
link(Data,14807262:Var2,[])
Primary=[13430363,273,154]
}
Add(LineBreak,7950296,504,189)
{
Caption="pos"
link(Out,1809828:doWork2,[])
Primary=[15485465,392,224]
}
Add(DoData,13926188,854,462)
{
Data=String(000D0AF6)
link(onEventData,12148725:doConvert,[])
AddHint(47,44,76,13,Data)
}
Add(Hub,7104584,819,413)
{
OutCount=3
link(onEvent1,6335570:doOperation,[])
link(onEvent2,13926188:doData,[(846,426)(846,468)])
link(onEvent3,5707167:doMessage,[(841,433)(841,531)])
}
Add(Convertor,12148725,896,462)
{
Mode=5
Digits=8
link(onResult,12572938:In,[])
}
Add(LineBreak,13636797,609,420)
{
link(Out,15470337:doPut,[])
Primary=[12572938,329,42]
}
Add(Math,13499098,847,616)
{
OpType=1
Op2=3
ResultType=0
link(onResult,8372668:In,[])
link(Op1,287188:Var,[])
}
Add(GetDataEx,14807262,581,217)
{
Angle=3
link(Data,9490686:Var3,[])
}
Add(LineBreak,5778378,616,231)
{
Caption="pos"
Type=1
link(Data,10305145:Var2,[(622,235)(601,235)])
Primary=[287188,231,357]
}
Add(HubEx,1809828,539,189)
{
link(onEvent,3591058:doPosition,[])
}
Add(LineBreak,1320943,504,203)
{
Caption="pos"
link(Out,11294963:doWork2,[])
Primary=[8372668,385,413]
}
Add(Hub,15386543,546,413)
{
InCount=2
OutCount=3
link(onEvent1,15470337:doGet,[])
link(onEvent2,12255921:doWork2,[(602,426)(602,510)])
link(onEvent3,6264518:doProcessMessages,[(581,433)(581,559)])
}
Add(GetDataEx,10305145,595,217)
{
Angle=3
link(Data,14807262:Var3,[])
}
Add(Application,6264518,602,553)
{
Wait=1
}
Add(GetDataEx,5130241,560,245)
{
link(Data,3591058:Size,[])
}
Add(For,7228710,497,413)
{
IncludeEnd=1
link(onEvent,15386543:doEvent1,[])
link(End,1149433:Var,[])
}
Add(Message,5887358,490,679)
{
Message="Всё!"
link(onMessage,5773352:doData,[])
}
Add(ProgressBar,10016673,707,497)
{
Left=5
Top=35
Width=380
Smooth=1
Point(doMax)
}
Add(MultiElementEx,10431564,658,497)
{
link(onEventData,10016673:doPosition,[])
link(cnt1,10016673:doMax,[])
link(cnt,13369395:Var,[])
}
BEGIN_SDK
Add(EditMultiEx,5196661,21,21)
{
WorkCount=#6:doData|7:doValue|
EventCount=#11:onEventData|4:cnt1|
DataCount=#3:cnt|3:Op1|
HOffset=70
link(doData,14513411:doData,[(45,27)(45,90)])
link(doValue,8562347:doValue,[(42,34)(42,153)])
}
Add(DoData,14513411,70,84)
{
link(onEventData,5196661:cnt1,[(212,90)(212,34)])
link(Data,5196661:cnt,[(76,52)(97,52)])
}
Add(Memory,8562347,63,147)
{
link(onData,1263160:doOperation,[])
}
Add(Math,1263160,112,147)
{
OpType=8
Op2=1000
ResultType=0
link(onResult,10096636:doCase,[])
}
Add(Case,10096636,161,147)
{
link(onTrue,9465062:doData,[])
}
Add(DoData,9465062,210,154)
{
link(onEventData,5196661:onEventData,[(282,160)(282,27)])
link(Data,8562347:Value,[(216,142)(142,142)(142,191)(69,191)])
}
END_SDK
Add(LineBreak,15146320,609,497)
{
link(Out,10431564:doData,[])
Primary=[7563050,-182,-315]
}
Add(LineBreak,11608474,560,259)
{
Caption="cnt"
Type=1
link(Data,5130241:Var2,[])
Primary=[13369395,98,210]
}
Add(LineBreak,7449520,574,259)
{
Caption="cnt"
Type=1
link(Data,5130241:Var3,[(580,250)])
Primary=[1149433,-70,126]
}
Add(DoData,5773352,532,679)
{
Data=Integer(0)
link(onEventData,2586497:In,[])
}
Add(HubEx,12255921,644,504)
{
link(onEvent,10431564:doValue,[])
}
Add(LineBreak,8467795,609,518)
{
link(Out,12255921:doWork3,[(648,524)])
Primary=[2586497,-35,161]
}
Add(StreamConvertor,15142878,742,189)
{
link(onResult,8206227:doEvent1,[])
}
Add(Hub,8206227,798,189)
{
link(onEvent1,10256155:doText,[(836,195)(836,160)])
link(onEvent2,5383138:doSearch,[])
}
Add(GetDataEx,5639363,861,175)
{
link(Data,10256155:Text,[])
}
Add(Position,5383138,861,196)
{
Target="003D0BF6"
ZeroPos=0
link(onSearch,12930397:doMessage,[])
link(Str,5639363:Var2,[])
}
Add(StrList,10256155,861,133)
{
}
Add(Message,12930397,945,196)
{
}
Add(LineBreak,8557205,504,182)
{
link(Out,3591058:doClose,[])
Primary=[15067525,-77,21]
}
Add(DoData,386121,504,322)
{
Data=Integer(0)
link(onEventData,11294963:doWork3,[(543,328)])
}
Add(HubEx,11294963,539,203)
{
Angle=3
link(onEvent,1809828:doWork3,[])
}
Вообще при любых операциях с файловым потоком следует иметь в виду позицию указателя. Советую почитать:
http://hi-asm.blogspot.com/2009/11/blog-post_16.html
http://hi-asm.blogspot.com/2009/11/blog-post_19.html
http://hi-asm.blogspot.com/2009/11/blog-post_2549.html
И другие статьи про файлы и информацию на том блоге.

Можно с сохранением в другой файл, тогда просто копируем в память байты из открываемого файла.
Add(FileStream,3591058,504,175)
{
Mode=2
AutoCopy=0
Point(doPosition)
Point(doCopyFromStream)
link(onLoad,4293154:doCopy,[])
}
Add(Hub,7672151,399,175)
{
OutCount=7
link(onEvent1,3591058:doOpen,[])
link(onEvent2,3591058:doClose,[])
link(onEvent3,7563050:In,[])
link(onEvent4,386121:doData,[(459,202)(459,328)])
link(onEvent5,7228710:doFor,[(455,209)(455,419)])
link(onEvent6,5887358:doMessage,[(451,216)(451,685)])
link(onEvent7,2167843:In,[])
}
Add(DropFile,7368331,315,175)
{
link(onDropFile,7672151:doEvent1,[])
}
Add(Message,5707167,854,525)
{
Message="Замена произведена"
Caption="ОК"
}
Add(Convertor,7177771,700,413)
{
Mode=6
Digits=8
link(onResult,7695569:doCompare,[])
}
Add(DataToFileEx,15470337,651,413)
{
DataSize=4
BigEndian=0
link(onGet,7177771:doConvert,[])
link(Stream,12401266:Var2,[])
}
Add(If_else,7695569,749,413)
{
Op2=String(003D0BF6)
link(onTrue,7104584:doEvent1,[])
link(onFalse,13499098:doOperation,[(800,426)(800,622)])
AddHint(-32,41,76,13,Op2)
}
Add(Math,6335570,854,413)
{
OpType=1
Op2=4
ResultType=0
link(onResult,15485465:In,[])
link(Op1,13430363:Var,[])
}
Add(GetDataEx,9490686,644,217)
{
link(Data,4293154:Position,[])
}
Add(LineBreak,14536235,658,231)
{
Caption="pos"
Type=1
link(Data,14807262:Var2,[])
Primary=[13430363,196,154]
}
Add(LineBreak,7950296,581,189)
{
Caption="pos"
link(Out,1809828:doWork2,[])
Primary=[15485465,315,224]
}
Add(DoData,13926188,854,462)
{
Data=String(000D0AF6)
link(onEventData,12148725:doConvert,[])
AddHint(47,44,76,13,Data)
}
Add(Hub,7104584,819,413)
{
OutCount=3
link(onEvent1,6335570:doOperation,[])
link(onEvent2,13926188:doData,[(846,426)(846,468)])
link(onEvent3,5707167:doMessage,[(841,433)(841,531)])
}
Add(Convertor,12148725,896,462)
{
Mode=5
Digits=8
link(onResult,12572938:In,[])
}
Add(LineBreak,13636797,609,420)
{
link(Out,15470337:doPut,[])
Primary=[12572938,329,42]
}
Add(Math,13499098,847,616)
{
OpType=1
Op2=3
ResultType=0
link(onResult,8372668:In,[])
link(Op1,6338404:Var,[])
}
Add(GetDataEx,14807262,658,217)
{
Angle=3
link(Data,9490686:Var3,[])
}
Add(HubEx,1809828,616,189)
{
link(onEvent,4293154:doPosition,[])
}
Add(LineBreak,1320943,581,203)
{
Caption="pos"
link(Out,11294963:doWork2,[])
Primary=[8372668,308,413]
}
Add(Hub,15386543,546,413)
{
InCount=2
OutCount=3
link(onEvent1,15470337:doGet,[])
link(onEvent2,12255921:doWork2,[(602,426)(602,510)])
link(onEvent3,6264518:doProcessMessages,[(581,433)(581,559)])
}
Add(GetDataEx,10305145,672,217)
{
Angle=3
link(Data,14807262:Var3,[])
}
Add(Application,6264518,602,553)
{
Wait=1
}
Add(GetDataEx,5130241,637,245)
{
link(Data,4293154:Size,[])
}
Add(For,7228710,497,413)
{
IncludeEnd=1
link(onEvent,15386543:doEvent1,[])
link(End,1149433:Var,[])
}
Add(Message,5887358,490,679)
{
Message="Всё!"
link(onMessage,13165155:doEvent1,[])
}
Add(ProgressBar,10016673,707,497)
{
Left=5
Top=35
Width=380
Smooth=1
Point(doMax)
}
Add(MultiElementEx,10431564,658,497)
{
link(onEventData,10016673:doPosition,[])
link(cnt1,10016673:doMax,[])
link(cnt,13369395:Var,[])
}
BEGIN_SDK
Add(EditMultiEx,5196661,21,21)
{
WorkCount=#6:doData|7:doValue|
EventCount=#11:onEventData|4:cnt1|
DataCount=#3:cnt|3:Op1|
HOffset=70
link(doData,14513411:doData,[(45,27)(45,90)])
link(doValue,8562347:doValue,[(42,34)(42,153)])
}
Add(DoData,14513411,70,84)
{
link(onEventData,5196661:cnt1,[(212,90)(212,34)])
link(Data,5196661:cnt,[(76,52)(97,52)])
}
Add(Memory,8562347,63,147)
{
link(onData,1263160:doOperation,[])
}
Add(Math,1263160,112,147)
{
OpType=8
Op2=1000
ResultType=0
link(onResult,10096636:doCase,[])
}
Add(Case,10096636,161,147)
{
link(onTrue,9465062:doData,[])
}
Add(DoData,9465062,210,154)
{
link(onEventData,5196661:onEventData,[(282,160)(282,27)])
link(Data,8562347:Value,[(216,142)(142,142)(142,191)(69,191)])
}
END_SDK
Add(LineBreak,15146320,609,497)
{
Caption="max"
link(Out,10431564:doData,[])
Primary=[7563050,-182,-308]
}
Add(LineBreak,11608474,637,259)
{
Caption="cnt"
Type=1
link(Data,5130241:Var2,[])
Primary=[13369395,21,210]
}
Add(LineBreak,7449520,651,259)
{
Caption="cnt"
Type=1
link(Data,6048035:Var2,[])
Primary=[1149433,-147,126]
}
Add(DoData,5773352,581,679)
{
Data=Integer(0)
link(onEventData,15000893:doEvent1,[])
}
Add(HubEx,12255921,644,504)
{
link(onEvent,10431564:doValue,[])
}
Add(LineBreak,8467795,609,518)
{
link(Out,12255921:doWork3,[(648,524)])
Primary=[2586497,49,161]
}
Add(GetDataEx,6048035,651,245)
{
Angle=3
link(Data,5130241:Var3,[])
}
Add(DoData,386121,504,322)
{
Data=Integer(0)
link(onEventData,15531216:doWork3,[(620,328)])
}
Add(HubEx,11294963,616,203)
{
Angle=3
link(onEvent,1809828:doWork3,[])
}
Add(LineBreak,13599322,665,259)
{
Caption="cnt"
Type=1
link(Data,6048035:Var3,[(671,250)])
Primary=[12344408,35,518]
}
Add(MemoryStream,4293154,630,175)
{
Point(doPosition)
Point(Position)
}
Add(LineBreak,4746512,672,231)
{
Caption="pos"
Type=1
link(Data,10305145:Var2,[])
Primary=[6338404,175,357]
}
Add(Hub,13165155,539,679)
{
link(onEvent1,5773352:doData,[])
link(onEvent2,15370695:doExecute,[(567,692)(567,727)])
}
Add(SDialog,15370695,581,721)
{
link(onExecute,11146631:doEvent1,[])
}
Add(FileStream,10792587,686,721)
{
Mode=1
}
Add(Hub,11146631,630,721)
{
OutCount=3
link(onEvent1,10792587:doOpen,[])
link(onEvent2,10681894:doCopy,[(665,734)(665,811)])
link(onEvent3,10792587:doClose,[(665,741)(665,734)])
}
Add(LineBreak,11061174,546,182)
{
Caption="clr"
link(Out,4293154:doClear,[])
Primary=[2167843,-119,35]
}
Add(StreamCopy,10681894,686,805)
{
link(Dest,10792587:Stream,[])
link(Source,11612322:Var,[])
link(Count,12344408:Var,[])
}
Add(Hub,15000893,630,679)
{
link(onEvent1,2586497:In,[])
link(onEvent2,6562592:In,[])
}
Add(LineBreak,1516779,581,210)
{
Caption="pos"
link(Out,15531216:doWork2,[])
Primary=[6562592,77,476]
}
Add(HubEx,15531216,616,210)
{
Angle=3
link(onEvent,11294963:doWork3,[])
}
Add(GetDataEx,12401266,651,305)
{
Angle=3
link(Data,4293154:Stream,[(636,310)])
}
Add(LineBreak,842150,658,322)
{
Caption="stm"
Type=1
link(Data,12401266:Var3,[(664,310)])
Primary=[11612322,35,441]
}
Исследуейте схему, смотрите, куда ведут связи, изменяйте схему и смотрите, как меняется результат - и всё поймёте.

--- Добавлено в 2020-01-04 06:36:41

Леонид писал(а):
Пословица писал(а):
Назвался груздем - полезай в кузовок!

Ну, иногда полезно размять мозги.

Редактировалось 3 раз(а), последний 2020-01-04 06:36:41
карма: 9
1
Голосовали:zhorik5
Ответов: 9906
Рейтинг: 351
#18: 2020-01-05 15:29:04 ЛС | профиль | цитата
3042 писал(а):
Ну, иногда полезно размять мозги.

Вот вижу я по схеме, что Вы, батенька - не эстет
Понимаю, что учить новичков, для Вас - не пустой звук.
Так учить же надо прекрасному!

В общем, вот так (как мне кажется) было бы эстетичнее:
Add(MainForm,160807,168,105)
{
Width=390
Height=133
Font=[Courier,12,1,0,204]
link(onCreate,9650407:doWork2,[])
}
Add(FileStream,3591058,168,56)
{
link(onLoad,2796801:doCopy,[])
}
Add(Hub,7672151,112,161)
{
OutCount=4
link(onEvent1,3591058:doOpen,[(137,167)(137,62)])
link(onEvent2,3591058:doClose,[(144,174)(144,69)])
link(onEvent3,10431564:doInit,[(137,181)(137,293)])
link(onEvent4,7228710:doFor,[])
}
Add(DropFile,7368331,56,161)
{
link(onDropFile,7672151:doEvent1,[])
}
Add(DataToFileEx,15470337,441,196)
{
DataSize=4
BigEndian=0
Point(Size)
Point(doPosition)
link(Stream,1402459:Var2,[])
}
Add(Hub,15386543,238,182)
{
OutCount=3
link(onEvent1,8850323:doWork1,[(424,188)])
link(onEvent2,5772768:doCompare,[])
link(onEvent3,10431564:doPosition,[(263,202)(263,279)])
}
Add(For,7228710,168,182)
{
IncludeEnd=1
link(onEvent,15386543:doEvent1,[])
link(onStop,10431564:doFinish,[(214,195)(214,286)])
link(End,1272363:Var1,[(181,173)(223,173)(223,250)])
}
Add(ProgressBar,10016673,378,280)
{
Left=26
Top=56
Width=317
Color=15780518
Smooth=1
ProgressColor=-16777203
}
Add(MultiElementEx,10431564,315,273)
{
@Hint=#79:Сервис визуализаци (doPosition) и окончания (doFinish - с сохранением, или без)|
link(onTerminate,3548599:doWork3,[(361,279)])
link(Size,1272363:Var2,[])
link(onPosition,10016673:doPosition,[])
link(onSave,13402507:doAdd,[])
}
BEGIN_SDK
Add(EditMultiEx,5196661,35,63)
{
WorkCount=#44:doPosition=На ходе - текущая позиция в файле|43:doFinish=На входе - позиция окончания цикла|44:doInit=На входе - полное имя входного файла |
EventCount=#56:onTerminate=Преждевременный Close должен остановить цикл|56:onPosition=Установка позиции ProgressBar (по doPosition)|84:onSave=На выходе - полное имя файла для сохранения (если позиция по doFinish < Size)|
DataCount=#17:Size=Размер файла|0:|
Width=370
Height=235
VOffset=35
HOffset=70
link(doPosition,1263160:doOperation,[])
link(doFinish,7671533:doCompare,[(60,111)(60,153)])
link(doInit,15140580:doEvent1,[(53,118)(53,237)])
}
Add(Application,6264518,280,98)
{
Wait=1
Point(onTerminate)
link(onTerminate,5196661:onTerminate,[])
}
Add(Hub,15140580,70,231)
{
OutCount=3
link(onEvent1,16536539:doPart,[])
link(onEvent2,11800802:doPart,[])
link(onEvent3,15798031:doOperation,[])
}
Add(Message,5707167,280,189)
{
Caption="ОК"
Type=2
Icon=3
Point(onYES)
link(onYES,11874295:doExecute,[(326,202)(326,230)])
}
Add(SDialog,11874295,336,224)
{
Point(doFileName)
Point(doStartDir)
link(onExecute,5196661:onSave,[(382,230)(382,118)])
}
Add(FilePartElm,16536539,245,231)
{
link(onPart,11874295:doFileName,[])
}
Add(FilePartElm,11800802,196,238)
{
Mode=0
link(onPart,11874295:doStartDir,[])
}
Add(If_else,7671533,70,147)
{
Type=4
link(onTrue,5887358:doMessage,[])
link(onFalse,3646533:doConvert,[(137,160)(137,188)])
link(Op2,9503147:Var1,[(83,124)])
}
Add(Message,5887358,280,147)
{
Message="Не найдено!"
Caption="Error"
Icon=1
Point(onOK)
link(onOK,6090869:doWork2,[])
}
Add(HubEx,3213293,322,105)
{
link(onEvent,5196661:onPosition,[])
}
Add(ConvertorEx,3646533,147,182)
{
Mode=6
Digits=8
link(onResult,16191573:doStrCatDlm,[])
}
Add(Hub,14634257,245,182)
{
link(onEvent1,6090869:doWork3,[(326,188)])
link(onEvent2,5707167:doMessage,[])
}
Add(HubEx,6090869,322,154)
{
Angle=3
link(onEvent,3213293:doWork3,[])
}
Add(StrCatDelim,16191573,196,182)
{
Str1="Произведена замена по смещению: 0x"
Str2="\r\nСохранить результат ???"
link(onStrCatDlm,14634257:doEvent1,[])
}
Add(Math,1263160,147,98)
{
OpType=3
ResultType=0
link(onResult,3605704:doData,[])
link(Op2,15798031:Result,[(160,89)(125,89)(125,285)(111,285)])
}
Add(GetDataEx,9503147,105,119)
{
link(Data,5196661:Size,[])
}
Add(ChangeMon,3605704,196,98)
{
link(onData,6734111:doEvent1,[])
}
Add(Hub,6734111,245,98)
{
link(onEvent1,6264518:doProcessMessages,[])
link(onEvent2,3213293:doWork2,[])
}
Add(Math,15798031,105,245)
{
OpType=3
Op2=100
link(Op1,9503147:Var2,[])
}
END_SDK
Add(MemoryStream,2796801,441,56)
{
}
Add(Edit,9617539,378,70)
{
Left=245
Top=14
Width=99
Height=30
Font=[Lucida Sans,12,1,0,0]
Hint="Заменить"
Text="000D0AF6"
Alignment=1
DataType=3
ClearAfterEnter=1
AddHint(-21,-38,66,13,Text)
}
Add(If_else,5772768,280,189)
{
link(onTrue,11101815:doEvent1,[])
link(Op1,11534555:Value,[])
link(Op2,15470337:Data,[(293,180)(321,180)(321,243)(447,243)])
}
Add(Hub,11101815,336,189)
{
OutCount=3
link(onEvent1,3548599:doWork2,[])
link(onEvent2,8850323:doWork2,[])
link(onEvent3,8353080:doData,[])
}
Add(DoData,8353080,378,203)
{
link(onEventData,15470337:doPut,[])
link(Data,9617539:Text,[])
}
Add(Memory,11534555,280,119)
{
Point(Data)
link(Data,6642366:Text,[])
}
Add(Edit,6642366,280,70)
{
Left=28
Top=14
Width=99
Height=30
Font=[Lucida Sans,12,1,0,0]
Hint="Найти"
Text="003D0BF6"
Alignment=1
DataType=3
ClearAfterEnter=1
link(onChange,9650407:doWork1,[(326,76)(326,111)(263,111)])
AddHint(-22,-38,66,13,Text)
}
Add(HubEx,9650407,259,119)
{
link(onEvent,11534555:doValue,[])
}
Add(FileStream,10792587,504,273)
{
Mode=1
AutoCopy=0
Point(doCopyFromStream)
}
Add(GetDataEx,1272363,315,245)
{
Angle=1
link(Data,15470337:Size,[(454,250)])
}
Add(MT_Add,13402507,455,287)
{
link(onAdd,10792587:doCopyFromStream,[])
link(Data,1402459:Var3,[(461,180)])
}
Add(GetDataEx,1402459,441,175)
{
link(Data,2796801:Stream,[])
}
Add(HubEx,8850323,420,196)
{
Angle=1
link(onEvent,15470337:doPosition,[(424,216)])
}
Add(HubEx,3548599,357,189)
{
Angle=3
link(onEvent,7228710:doStop,[(361,167)(158,167)(158,195)])
}

Ну это я так, в виду полезности разминки мозгов

Редактировалось 6 раз(а), последний 2020-01-08 15:27:02
карма: 9

2
Голосовали:Tad, zhorik5
Ответов: 188
Рейтинг: 2
#19: 2020-01-09 01:11:21 ЛС | профиль | цитата
Спасибо! Буду изучать!
карма: 0

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