Вверх ↑
Ответов: 2456
Рейтинг: 696
#1: 2016-12-08 00:14:58 ЛС | профиль | цитата
Вот вам моя схема:
схема

Add(MainForm,4378101,245,98)
{
Width=935
Height=600
Position=1
link(onCreate,16482401:doOpen,[])
}
Add(Edit,16355833,672,644)
{
Left=5
Top=25
Width=145
Ctl3D=1
Text="15s24vpoo2"
Alignment=2
}
Add(Memo,7124130,539,119)
{
@Hint=#31:Это последние полученные данные|
Left=5
Top=65
Width=225
Height=125
Ctl3D=1
ScrollBars=2
AddHint(-84,-32,194,13,@Hint)
}
Add(TCP_Client,16482401,301,112)
{
Port=6667
IP="95.172.133.164"
link(onRead,6527222:doEvent1,[])
}
Add(Charset,5432023,385,119)
{
Type=7
link(onCharset,1804923:doReplace,[])
}
Add(FormatStr,4120375,672,686)
{
Mask=":ru IDENT 152 -1 4030 1 2 :GALA\r\nRECOVER %1\r\nPHONE 360 640 1 2 :MPP_v.8.0.12\r\n"
link(onFString,3352258:doWork,[])
link(Str1,16355833:Text,[])
}
Add(Replace,1804923,427,119)
{
SubStr=" "
DestStr="\r\n"
link(onReplace,2130206:doEvent1,[(481,125)(481,118)])
}
Add(Hub,6527222,350,112)
{
OutCount=3
link(onEvent1,7124130:doClear,[(473,118)(473,132)])
link(onEvent2,5432023:doCharset,[])
link(onEvent3,5559791:doRead,[(373,132)(373,804)])
}
Add(Memo,8633362,658,112)
{
@Hint=#30:Это лог всех полученных данных|
Left=250
Top=65
Width=285
Height=360
Ctl3D=1
AddType=1
ScrollBars=2
AddHint(-74,-55,181,13,@Hint)
}
Add(Hub,2130206,504,112)
{
link(onEvent1,8633362:doAdd,[])
link(onEvent2,7124130:doAdd,[])
}
Add(ArrayRW,5559791,399,798)
{
@Hint=#20:Читаем первую строку|
Index=Integer(0)
link(onRead,8821029:doCase,[])
link(Array,6333921:getVar,[])
AddHint(-95,44,131,13,@Hint)
AddHint(10,-22,21,13,Index)
}
Add(Case,3396458,532,581)
{
Value=String(HAAAPSI)
link(onNextCase,1321523:doCase,[(592,587)(592,554)(527,554)(527,377)])
link(onTrue,6457300:doEvent1,[])
AddHint(-1,39,71,13,Value)
}
Add(Case,1321523,546,371)
{
Value=String(REGISTER)
link(onTrue,6423993:doEvent1,[])
AddHint(-36,-18,80,13,Value)
}
Add(Case,8821029,546,798)
{
Value=String(PING)
link(onNextCase,3396458:doCase,[(590,804)(590,769)(527,769)(527,587)])
link(onTrue,2700626:doData,[])
AddHint(-13,33,51,13,Value)
}
Add(DoData,2700626,616,805)
{
Data=String(PONG)
link(onEventData,11907089:doWork,[])
AddHint(-13,-22,56,13,Data)
}
Add(FormatStr,9206063,672,441)
{
DataCount=4
Mask="USER %1 %2 %3 %4\r\n\r\n"
Point(FString)
link(onFString,10753192:doAdd,[])
link(Str1,11136958:Item,[])
link(Str2,7645903:Item,[(685,334)(720,334)])
link(Str3,5983206:Value,[(692,359)(853,359)])
link(Str4,9087631:Var,[])
}
Add(ArrayRW,11136958,672,210)
{
Index=Integer(1)
link(Array,14378459:getVar,[])
AddHint(14,-18,21,13,Index)
}
Add(Hub,6423993,623,378)
{
OutCount=5
link(onEvent1,11136958:doRead,[(646,384)(646,216)])
link(onEvent2,7645903:doRead,[(656,391)(656,244)])
link(onEvent3,11549066:doRead,[(664,398)(664,300)])
link(onEvent4,9206063:doString,[(655,405)(655,447)])
link(onEvent5,4847400:doData,[(647,412)(647,503)])
}
Add(ArrayRW,7645903,714,238)
{
Index=Integer(2)
link(Array,3768665:getVar,[])
AddHint(8,-18,21,13,Index)
}
Add(Memo,10753192,819,441)
{
Left=5
Top=440
Width=435
Height=85
}
Add(Hub,6457300,588,588)
{
link(onEvent1,13881349:doRead,[])
link(onEvent2,4120375:doString,[(644,601)(644,692)])
}
Add(ArrayRW,13881349,672,588)
{
Index=Integer(1)
link(onRead,3021671:doCalcHash,[])
link(Array,6190941:getVar,[])
AddHint(10,-19,21,13,Index)
}
Add(Memory,13036011,756,588)
{
}
Add(Memory,5983206,847,294)
{
}
Add(ArrayRW,11549066,756,294)
{
Index=Integer(3)
link(onRead,7542950:doCharset,[])
link(Array,5436636:getVar,[])
AddHint(9,-20,21,13,Index)
}
Add(LineBreak,7883132,756,637)
{
Caption="ХЭШ"
Type=1
link(Data,13036011:Value,[])
Primary=[9087631,-63,-266]
}
Add(LineBreakEx,4802288,553,182)
{
Caption="data"
Type=3
link(_Data,7124130:Array,[])
}
Add(LineBreakEx,6333921,399,756)
{
Caption="data"
Type=2
}
Add(LineBreakEx,14378459,672,175)
{
Caption="data"
Type=2
}
Add(LineBreakEx,11907089,665,805)
{
Caption="send"
}
Add(LineBreakEx,3352258,721,686)
{
Caption="send"
}
Add(LineBreakEx,13179498,238,140)
{
Caption="send"
Type=1
link(OnEvent,16482401:doSend,[(291,146)(291,132)])
}
Add(LineBreakEx,10934201,721,497)
{
Caption="send"
}
Add(LineBreakEx,3768665,714,203)
{
Caption="data"
Type=2
}
Add(LineBreakEx,5436636,756,259)
{
Caption="data"
Type=2
}
Add(LineBreakEx,6190941,672,553)
{
Caption="data"
Type=2
}
Add(Charset,7542950,805,294)
{
Type=6
link(onCharset,5983206:doValue,[])
}
Add(InlineCode,3021671,714,588)
{
WorkPoints=#10:doCalcHash|
EventPoints=#8:onResult|
DataPoints=#3:Str|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|4:uses|22: KOL, Share, Hash152;|0:|4:type|21: THiAsmClass = class|11: private|0:|10: public|21: Str: THI_Event;|29: onResult: THI_Event; |58: procedure doCalcHash(var _Data: TData; Index: Word);|6: end;|0:|0:|14:implementation|0:|0:|0:|65:procedure THiAsmClass.doCalcHash(var _Data: TData; Index: Word); |3:var|14: Hash: string;|5:begin|57: Hash := Hash152.CreateHash(ReadString(_Data, Str, ''));|42: _hi_CreateEvent(_Data, @onResult, Hash);|4:end;|0:|4:end.|
link(onResult,13036011:doValue,[])
}
Add(DoData,4847400,672,497)
{
link(onEventData,10934201:doWork,[])
link(Data,9206063:FString,[])
}
Saturn36rus, обратите внимание что она на мало чем отличается от выложенной мною во втором посте. Что тут сложного, мне пока не понятно.

Netspirit, посколько помню вы в этих TCP разбираетесь в разы лучше меня. Хоть отпишитесь как проверите, что там в моей такого уникального. Может на будущее кому пригодится этот нюанс.

Вот еще этот кусочек после добавлял для тестирования, но он так для веса
кусочек схемы

Add(Case,1891229,280,329)
{
Value=String(999)
link(onNextCase,9521142:doCase,[(324,335)(324,261)(212,261)(212,188)])
link(onTrue,15124140:doCharset,[])
AddHint(-10,38,43,13,Value)
}
Add(LineBreakEx,3819463,455,336)
{
Caption="send"
}
Add(Case,9521142,224,182)
{
Value=String(F0)
link(onTrue,11583987:doString,[])
AddHint(-10,38,37,13,Value)
}
Add(Label,19263,336,189)
{
Left=250
Top=45
Width=270
Caption="Друзей онлайн: 0"
}
Add(FormatStr,11583987,280,189)
{
DataCount=1
Mask="Друзей онлайн: %1"
link(onFString,19263:doText,[])
}
Add(FormatStr,10035911,406,336)
{
DataCount=1
Mask="FWLISTVER 0\r\nADDONS 0\r\nMYADDONS 0\r\nR 0\r\nJOIN %1\r\nPHONE 360 640 1 2 :MPP_v.8.0.12"
link(onFString,3819463:doWork,[])
}
Add(Edit,16294799,350,280)
{
Left=250
Top=20
Width=125
Text="Планета"
}
Add(Charset,15124140,350,336)
{
Type=6
link(onCharset,10035911:doString,[])
link(Text,16294799:Text,[])
}
карма: 11

0
Редактировалось 1 раз(а), последний 2016-12-08 00:15:39