Вверх ↑
Ответов: 432
Рейтинг: 13
#1: 2020-04-10 16:18:18 ЛС | профиль | цитата
Задача: дается список ссылок, есть в списке ссылки с поддоменами, нужно вырезать именно домен (это когда например сайт основной hiasm.com, его нужно выделить из forum.hiasm.com), может оканчиваться и на co.il и любые, это адрес главного сайта. Вопрос решил, я спрашивал, так и никто не ответил, вот решение
Add(MultiElementEx,6871373,546,259)
{
}
BEGIN_SDK
Add(EditMultiEx,6811382,21,21)
{
WorkCount=#59:doReplace=Удалить субдомен из ссылки, оставить только домен|
EventCount=#25:onEvent1=Результат, домен|
Width=986
Height=466
link(doReplace,13432187:doWork1,[(56,27)(56,41)])
}
Add(Str_Enum,14823284,392,112)
{
Delimiter="."
link(onEnum,12894658:doEvent1,[])
link(onEndEnum,1840434:doCompare,[(435,125)(435,181)])
link(String,7462058:Var2,[])
}
Add(CounterEx,7109243,483,119)
{
Point(doReset)
}
Add(StrList,11341552,595,112)
{
Point(EndIdx)
Point(onGetString)
Point(doGetString)
link(onGetString,5970074:doData,[])
}
Add(Hub,7395296,357,91)
{
OutCount=4
link(onEvent1,8228982:doData,[(385,97)(385,48)])
link(onEvent2,7109243:doReset,[(470,104)(470,132)])
link(onEvent3,11341552:doClear,[(572,111)(572,125)])
link(onEvent4,14823284:doEnum,[])
}
Add(Hub,12894658,441,112)
{
link(onEvent1,11341552:doAdd,[])
link(onEvent2,7109243:doNext,[])
}
Add(If_else,1840434,483,175)
{
Op2=Integer(2)
link(onTrue,14125867:doData,[])
link(onFalse,14916339:doOperation,[])
link(Op1,7109243:Count,[])
}
Add(EventFromData,8228982,392,42)
{
}
Add(DoData,14125867,532,175)
{
link(onEventData,7167788:doEvent3,[(758,181)(758,328)])
link(Data,11861143:Var2,[])
}
Add(GetDataEx,7462058,392,84)
{
link(Data,8228982:GetData,[])
}
Add(StrMask,16343016,182,35)
{
Mask="*.*"
link(onTrue,9510822:doEvent1,[])
}
Add(Math,14916339,616,182)
{
OpType=1
Op2=1
ResultType=0
link(onResult,8611915:doEvent1,[])
link(Op1,14559832:Var2,[])
}
Add(Hub,8611915,658,182)
{
link(onEvent1,11341552:doGetString,[(681,188)(681,159)(585,159)(585,146)])
link(onEvent2,11286967:doRead,[(684,195)(684,216)(597,216)(597,251)])
}
Add(ArrayRW,11286967,609,245)
{
link(onRead,1912082:doString,[])
link(Array,5445123:Var2,[])
link(Index,9238031:Var2,[])
}
Add(GetDataEx,14559832,616,161)
{
link(Data,11341552:EndIdx,[])
}
Add(FormatStr,1912082,686,245)
{
Mask="%1.%2"
link(onFString,2660277:doEvent1,[])
link(Str1,14503590:Var2,[])
}
Add(EventFromData,5970074,686,119)
{
}
Add(Hub,2660277,735,245)
{
link(onEvent1,1269374:doData,[])
link(onEvent2,1886402:doLength,[(759,258)(759,307)])
}
Add(EventFromData,1269374,770,245)
{
}
Add(Length,1886402,770,301)
{
link(onLength,7919030:doCompare,[])
}
Add(If_else,7919030,819,301)
{
Type=1
Op2=Integer(7)
link(onTrue,2070955:In,[])
link(onFalse,16680624:doData,[])
}
Add(DoData,16680624,903,308)
{
link(onEventData,7167788:doEvent1,[])
link(Data,11861143:Var3,[(909,89)])
}
Add(GetDataEx,11861143,532,84)
{
Angle=3
link(Data,7462058:Var3,[])
}
Add(Hub,7167788,952,308)
{
InCount=3
OutCount=1
link(onEvent1,6811382:onEvent1,[(986,314)(986,27)])
}
Add(FormatStr,5113210,735,399)
{
DataCount=3
Mask="%1.%2.%3"
link(onFString,7167788:doEvent2,[(942,405)(942,321)])
link(Str1,6651070:GetData,[])
link(Str2,14503590:Var3,[(748,208)])
link(Str3,11286967:Item,[(755,315)(615,315)])
}
Add(ArrayRW,13267957,651,350)
{
link(onRead,9656522:doEvent1,[])
link(Array,5445123:Var3,[(657,173)])
link(Index,9197342:Result,[(664,338)(622,338)(622,394)(587,394)])
}
Add(Math,9197342,581,350)
{
OpType=1
Op2=2
ResultType=0
link(onResult,13267957:doRead,[])
link(Op1,9238031:Var1,[(587,229)])
}
Add(EventFromData,6651070,735,350)
{
}
Add(GetDataEx,5445123,609,168)
{
link(Data,11341552:Array,[])
}
Add(GetDataEx,9238031,616,224)
{
Angle=1
link(Data,14559832:Var1,[(650,229)(650,166)])
}
Add(LineBreak,13113367,525,350)
{
link(Out,9197342:doOperation,[])
Primary=[2070955,336,-49]
}
Add(Hub,9656522,693,350)
{
link(onEvent1,6651070:doData,[])
link(onEvent2,5113210:doString,[(721,363)(721,405)])
}
Add(GetDataEx,14503590,686,203)
{
link(Data,5970074:GetData,[])
}
Add(MultiElement,13432187,133,35)
{
link(onEvent1,16343016:doCompare,[])
}
BEGIN_SDK
Add(EditMulti,15374381,21,21)
{
EventCount=1
WorkCount=1
Width=251
Height=109
link(doWork1,2709502:doEvent1,[(35,27)(35,76)])
}
Add(InlineCode,16227429,77,77)
{
@Hint=#45:Замена любых неотображаемых знаков на пробелы|
WorkPoints=#2:go|
EventPoints=#7:CurText|
DataPoints=#4:text|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|18: text:THI_Event;|21: CurText:THI_Event;|3: |44: procedure go(var Data:TData; index:word);|3: |5: end;|0:|14:implementation|0:|25:procedure THiAsmClass.go;|3:var|11: S:String;|17: i, Len:Integer;|5:begin|28: S :=(ToStringEvent(text));|18: Len :=Length(S);|27: for i :=1 to Len do begin|35: if S[i] ‹ #32 then S[i] := ' ';|6: end;|23:_hi_OnEvent(CurText,S);|4:end;|4:end.|
link(CurText,11672152:doReplace,[])
link(text,13718162:GetData,[])
}
Add(Hub,2709502,49,70)
{
link(onEvent1,13718162:doData,[(70,76)(70,41)])
link(onEvent2,16227429:go,[])
}
Add(EventFromData,13718162,77,35)
{
}
Add(Replace,11672152,119,77)
{
SubStr=" "
link(onReplace,15374381:onEvent1,[(211,83)(211,27)])
}
END_SDK
Add(URLParser,7478251,259,42)
{
}
Add(Hub,9510822,231,42)
{
link(onEvent1,7478251:doParse,[])
link(onEvent2,7137299:doData,[(252,55)(252,97)])
}
Add(Replace,16083250,308,91)
{
SubStr="www."
link(onReplace,7395296:doEvent1,[])
}
Add(DoData,7137299,259,91)
{
link(onEventData,16083250:doReplace,[])
link(Data,7478251:Host,[])
}
END_SDK
В схеме есть компонент от NetSpirit URLParser
И в схеме используется компонент EventFromData опять не правильно, а мне так нравится его использовать, а Memory использую только когда нужно очищать данные
карма: 4

0
Редактировалось 1 раз(а), последний 2020-04-10 16:22:47