Tad писал(а):
Берёшь бумагу и карандаш и пишешь :1. Нужно проверить 50 доменов имея 5 потоков.
и воплощаешь в жизнь
Т.е. тебе нужно на кнопку "Проверить" нажать 10 раз.
Как ты её нажмешь или компонентом For (Start=1, End=50 Step=5) или по-другому - твоё дело.
Красные компоненты - лишние. ИМХО.
Не не пашет, нашел где идет косяк, косяк идет на линии которую пометил красной стрелкой:
thesever_3.gif
В схеме с прокси чекером отлично все работает, а после моих кривых рук, косяк идет на этой линии.
------------ Дoбавленo в 15.13:
Сделал таким образом, вроде все пашет, но есть другая проблема, почему то пропадают строки.
Make(delphi)
ver(4.05 build 186)
Add(MultiElementEx,7652017,732,392)
{
@Hint=#31:Модуль MultiThreads_Checker_1.1|
Mode=1
link(OnResult,16344680:doEvent1,[])
link(End,3306489:In,[])
link(get_ip_port,6487186:Var,[])
AddHint(180,-109,184,13,@Hint)
}
BEGIN_SDK
Add(EditMultiEx,9746293,21,21)
{
WorkCount=#5:##add|9:##hdelete|
EventCount=#8:OnResult|3:End|
VarCount=#7:##count|13:##eventHandle|
DataCount=#11:get_ip_port|0:|
Width=1630
Height=851
VOffset=80
HOffset=140
Point(##add)
Point(##hdelete)
Point(##count)
Point(##eventHandle)
link(##add,12340182:doWork,[])
}
Add(LineBreakEx,8666620,1431,101)
{
Caption="Result"
Type=1
link(OnEvent,15049631:doSafeMode,[])
}
Add(LineBreakEx,47105,1520,135)
{
Caption="End"
Type=1
link(OnEvent,9746293:End,[(1594,141)(1594,114)])
}
Add(SafeMode,15049631,1528,101)
{
Name="checker_result"
link(onSafeMode,9746293:OnResult,[])
}
Add(LineBreakEx,6281593,1341,478)
{
Caption="Result"
}
Add(LineBreakEx,7307885,35,210)
{
Caption="StartCheck"
Type=1
link(OnEvent,6667049:doSafeMode,[(118,216)(118,181)])
}
Add(LineBreakEx,12340182,54,101)
{
Caption="StartCheck"
}
Add(LineBreak,2743026,161,38)
{
Caption="get_ip_port"
Type=1
link(Data,9746293:get_ip_port,[])
Primary=[8039361,34,104]
}
Add(SafeMode,6667049,127,175)
{
Name="checker_get_ip_port"
link(onSafeMode,3700032:doData,[])
}
Add(DoData,3700032,196,175)
{
link(onEventData,3013132:doCompare,[(244,181)(244,193)])
link(Data,8039361:Var,[(202,162)(201,162)])
}
Add(Hub,10215304,677,173)
{
link(onEvent1,117603:doMultiReplace,[(762,179)(762,153)])
link(onEvent2,16357934:In,[(706,186)(706,209)])
}
Add(Thread,14975125,625,173)
{
Delay=1
FastStop=0
BusyEvent=1
link(onExec,10215304:doEvent1,[])
}
Add(If_else,3013132,267,187)
{
link(onTrue,8080686:doEvent1,[(312,193)(312,163)])
link(onFalse,9654815:doCompare,[(317,200)(317,202)])
link(Op2,16764516:Value,[])
}
Add(Memory,16764516,274,130)
{
}
Add(Hub,8080686,325,157)
{
link(onEvent1,6214789:doWork,[(346,163)(346,159)])
link(onEvent2,16421175:doWork,[(346,170)(346,175)])
}
Add(LineBreakEx,6214789,353,153)
{
Caption="End"
}
Add(LineBreakEx,3820589,533,187)
{
Caption="StopCheck"
Type=1
link(OnEvent,14975125:doStop,[(616,193)(616,186)])
}
Add(LineBreakEx,16421175,353,169)
{
Caption="StopCheck"
}
Add(FormatStr,4957244,1141,525)
{
DataCount=8
Mask="%1,%2,%3,%4"
link(onFString,6281593:doWork,[(1270,531)(1270,484)])
link(Str1,3831849:Var,[])
link(Str3,6798492:Var,[])
link(Str4,12414457:Var,[])
}
Add(StrList,2159738,840,84)
{
Strings=#9:http://=;|10:https://=;|6:www.=;|3:/=;|
}
Add(MultiReplace,117603,833,147)
{
link(Text,16081067:Var3,[(839,135)(648,135)(648,250)])
link(ReplaceList,13927829:Var2,[])
}
Add(Hub,7593678,1297,625)
{
OutCount=3
}
Add(LineBreakEx,1917053,1341,612)
{
Caption="StartCheck"
}
Add(StrMask,9654815,336,196)
{
Mask="http*"
link(onFalse,7516542:doStrCat,[])
link(onTrue,7695048:doWork3,[(431,224)])
}
Add(StrCat,7516542,385,196)
{
Str1="http://"
link(onStrCat,7695048:doWork2,[])
}
Add(Memory,16482908,448,196)
{
@Hint=#15:Состояние хоста|
link(onData,14975125:doStart,[(518,202)(518,179)])
}
Add(HubEx,7695048,427,196)
{
link(onEvent,16482908:doValue,[])
}
Add(GetDataEx,16081067,441,245)
{
link(Data,16482908:Value,[(447,237)(454,237)])
}
Add(HTTP_Get,9729894,294,406)
{
Wait=0
link(onDownload,1605886:doConvert,[])
link(URL,10781118:Result,[(300,394)(276,394)(276,450)(251,450)])
}
Add(StrCat,10781118,245,406)
{
Str1="http://bar-navig.yandex.ru/u?ver=2&show=32&url="
link(onStrCat,9729894:doDownload,[])
link(Str2,4000629:Var3,[(258,256)(397,256)(397,257)])
}
Add(Convertor,1605886,343,413)
{
Mode=11
link(onResult,2066129:doCharset,[])
}
Add(Charset,2066129,392,413)
{
Type=7
link(onCharset,15115652:doSearch,[])
}
Add(BlockFind,10626003,231,525)
{
IncludeBlock=1
StartBlock="<yaca url=""
EndBlock=""/>"
Point(onNotFind)
link(onSearch,1983570:doMultiReplace,[])
}
Add(MultiReplace,1983570,280,525)
{
link(onResult,15176407:doExec,[])
link(ReplaceList,834122:Var,[])
}
Add(DoData,13501458,455,525)
{
Data=String(Нет)
link(onEventData,11141711:doWork2,[])
}
Add(DoData,12805414,455,567)
{
Data=String(Да)
link(onEventData,11141711:doWork3,[(515,573)])
}
Add(Memory,8570413,525,525)
{
@Hint=#15:Состояние хоста|
link(onData,4957244:doString,[])
}
Add(BlockFind,15115652,476,413)
{
IncludeBlock=1
StartBlock="value=""
EndBlock=""/>"
Point(onNotFind)
link(onSearch,12563769:doValue,[])
link(onEndSearch,13443203:In,[(520,426)(520,444)(450,444)(450,461)])
}
Add(Memory,12563769,539,413)
{
@Hint=#15:Состояние хоста|
}
Add(RE_Search,15176407,343,525)
{
ModifierR=1
Point(Matches)
link(onMatch,13501458:doData,[])
link(onNotFound,10307742:doEvent1,[])
link(SourceStr,1983570:Result,[(349,516)(286,516)])
link(Expression,13863573:Var,[])
}
Add(HubEx,11141711,511,525)
{
link(onEvent,8570413:doValue,[])
}
Add(Hub,10307742,392,532)
{
link(onEvent1,12805414:doData,[(430,538)(430,573)])
link(onEvent2,10417390:doData,[(430,545)(430,615)])
}
Add(DoData,10417390,455,609)
{
Data=String(0)
}
Add(LineBreak,5904262,154,406)
{
Caption="Start Yandex"
link(Out,10781118:doStrCat,[])
Primary=[16357934,567,-203]
}
Add(LineBreak,7193101,539,462)
{
Caption="Тиц"
Type=1
link(Data,12563769:Value,[])
Primary=[6798492,616,-21]
}
Add(LineBreak,6099172,154,525)
{
Caption="Start клей"
link(Out,10626003:doSearch,[])
Primary=[13443203,308,-70]
}
Add(LineBreak,7163417,525,574)
{
Caption="Клей"
Type=1
link(Data,8570413:Value,[])
Primary=[12414457,637,-112]
}
Add(LineBreak,2035511,896,161)
{
Caption="http"
Type=1
link(Data,13927829:Var3,[(902,138)])
Primary=[834122,-609,322]
}
Add(LineBreak,14741551,833,210)
{
Caption="Domain"
Type=1
link(Data,117603:Result,[])
Primary=[13863573,-483,287]
}
Add(LineBreak,5729790,448,287)
{
Caption="http"
Type=1
link(Data,4000629:Var2,[])
Primary=[3831849,693,203]
}
Add(GetDataEx,4000629,448,252)
{
link(Data,16081067:Var2,[(454,246)(450,246)(450,260)(447,260)])
}
Add(GetDataEx,13927829,840,133)
{
link(Data,2159738:Text,[])
}
END_SDK
Add(MainForm,11326563,525,189)
{
Width=463
Height=477
Caption=""
Position=1
}
Add(Button,13777211,496,392)
{
Left=115
Top=45
Width=185
Height=30
Caption="Проверить"
link(onClick,11304990:doFor,[])
}
Add(Edit,12430023,581,334)
{
Left=10
Top=50
Text="5"
}
Add(Label,6950492,525,273)
{
Left=65
Top=55
Width=47
Height=17
Caption="Потоков"
}
Add(For,11304990,581,392)
{
End=5
link(onEvent,6114489:doWork2,[])
link(End,12430023:Text,[(594,379)(587,379)])
}
Add(LineBreak,8859598,670,279)
{
Caption="get_ip_port"
Type=1
link(Data,8737633:GetData,[])
Primary=[6487186,62,36]
}
Add(TCP_Server,5234581,525,231)
{
}
Add(EventFromData,8737633,670,237)
{
link(onEvent,10645816:doData,[])
}
Add(Timer,6989260,385,189)
{
Interval=100
link(onTimer,3105876:doData,[])
}
Add(FormatStr,13623212,476,189)
{
DataCount=1
Mask="Прокси чекер 1.1; Активных модулей: %1;"
link(onFString,11326563:doCaption,[])
}
Add(LineBreakEx,5700589,732,443)
{
Caption="CountMTCheck"
Type=3
link(_Data,7652017:##count,[])
}
Add(LineBreakEx,14012912,431,162)
{
Caption="CountMTCheck"
Type=2
}
Add(ChangeMon,3105876,431,189)
{
link(onData,13623212:doString,[])
link(Data,14012912:getVar,[])
}
Add(LineBreak,8882350,625,441)
{
Caption="End"
link(Out,16276923:doPush,[])
Primary=[3306489,152,-42]
}
Add(StrList,3673357,798,195)
{
Strings=#12:parfumeco.ru|13:stockihome.ru|12:k-magic38.ru|19:http://the-sever.ru|12:divasalon.su|12:apk-group.ru|15:tktechnology.ru|17:tktechnologija.ru|14:elektrostil.su|14:novinkaomsk.ru|22:nasha-mebel-kotovsk.ru|15:zooplaneta55.ru|18:grillandveggies.ru|11:mingryaz.ru|14:tsm-kuzbass.ru|11:ekopro74.ru|9:kct-nn.ru|18:technology-info.ru|12:soundmaxi.ru|12:zaptorg74.ru|11:eat-meat.ru|15:mimaki-kazan.ru|13:falke-shop.ru|11:perm-zuk.ru|14:zuki-moscow.ru|13:tourismrus.ru|8:ekt46.ru|10:t-proff.ru|
Point(doGetString)
Point(onGetString)
Point(IdxToSelect)
link(onGetString,8737633:doData,[(843,208)(843,302)(658,302)(658,243)])
}
Add(InfoTip,14774,644,168)
{
Info=#27:Список ip:port для проверки|
Width=218
Height=151
}
Add(Hub,6078942,762,237)
{
link(onEvent1,3673357:doGetString,[])
link(onEvent2,3673357:doDelete,[(787,250)(787,215)])
}
Add(DoData,10645816,715,237)
{
Data=Integer(0)
link(onEventData,6078942:doEvent1,[])
}
Add(Stack,16276923,672,441)
{
link(onPop,7652017:##hdelete,[(718,454)(718,405)])
link(Data,7652017:##eventHandle,[(678,433)(745,433)])
}
Add(Timer,9657903,626,459)
{
Interval=30
link(onTimer,16276923:doPop,[(665,465)(665,454)])
}
Add(Edit,9371808,952,357)
{
Left=10
Top=15
Width=290
Text=""
Alignment=2
}
Add(Hub,16344680,917,392)
{
OutCount=4
link(onEvent1,9371808:doText,[(941,398)(941,363)])
link(onEvent2,9855146:doAdd,[(941,405)(941,475)])
link(onEvent3,6114489:doWork3,[(943,412)(943,406)(669,406)])
link(onEvent4,2751593:doNext,[(943,419)(943,549)(863,549)(863,678)])
}
Add(Memo,9855146,952,469)
{
Left=10
Top=80
Width=290
Height=320
ScrollBars=2
link(onChange,2406197:doString,[(996,475)(996,527)(954,527)(954,580)])
}
Add(HubEx,6114489,665,392)
{
link(onEvent,7652017:##add,[])
}
Add(Label,6341754,1001,574)
{
Left=315
Top=35
Width=120
Caption="Строк в списке: 0"
}
Add(FormatStr,2406197,959,574)
{
DataCount=1
Mask="Строк: %1"
link(onFString,6341754:doText,[])
link(Str1,9855146:Count,[])
}
Add(Label,8343711,973,672)
{
Left=315
Top=15
Width=120
Caption="Выдано строк: 0"
}
Add(FormatStr,5745286,931,672)
{
DataCount=1
Mask="Выдано строк: %1"
link(onFString,8343711:doText,[])
}
Add(CounterEx,2751593,875,672)
{
Max=999999
Point(doMax)
Point(doReset)
Point(Min)
Point(Max)
Point(onThroughMax)
Point(onSet)
link(onNext,5745286:doString,[])
}
То есть в списке на проверку есть 28 доменов, а резултатов выдает каждый раз по разному, то на 24, то на 27 доменов из списка.