Вверх ↑
Разработчик
Ответов: 26200
Рейтинг: 2137
#1: 2010-04-21 22:11:56 ЛС | профиль | цитата
Tad писал(а):
Не. 103 байта

Твоя строка длиной всего 72 символа, откуда ты взял 103

Попробуй вот этот экземпляр, у меня ищутся нормально концевые строки, только имя файла поменяй


Add(MainForm,2953706,189,161)
{
Width=717
Height=143
}
Add(InlineCode,5889051,315,287)
{
@Hint=#11:Boyer-Moore|
WorkPoints=#5:doPos|
EventPoints=#5:onPos|
DataPoints=#3:Str|6:SubStr|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses Windows,kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|21: onPos:THI_Event;|28: Str, Substr: THI_Event;|50: procedure doPos(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|72:function PosEx2(const SubStr, S: string; Offset: cardinal = 1): Integer;|3:var|22: Ps, lp, i : Integer;|33: BMT: array[0..255] of cardinal;|5:begin|23: lp := Length(SubStr);|1: |22: for i := 0 to 255 do|19: BMT[i] := lp; |25: for i := lp downto 1 do|36: if BMT[ord(SubStr[i])] = lp then|36: BMT[ord(SubStr[i])] := lp - i;|0:|24: Ps := Offset + lp - 1;|0:|26: while Ps <= Length(S) do|31: if SubStr[lp] <> S[Ps] then|32: Ps := Ps + BMT[ord(S[Ps])]|8: else|29: for i := lp downto 1 do|43: if SubStr[i] <> S[Ps - lp + i] then|13: begin|23: Ps := Ps + 1;|16: Break;|11: end|26: else if i = 1 then|13: begin|32: Result := Ps - lp + 1;|15: Exit;|12: end;|14: Result := 0;|4:end;|0:|28:procedure THiAsmClass.doPos;|5:begin|71: _hi_onEvent(onPos,PosEx2(ToStringEvent(SubStr),ToStringEvent(Str),5));|4:end;|0:|4:end.|
link(onPos,9916722:doText,[])
link(Str,4004521:Text,[])
link(SubStr,5209601:Var2,[])
AddHint(51,39,75,13,@Hint)
}
Add(Edit,6864257,322,231)
{
Left=5
Top=5
Width=605
Text="("Шевченко","пер","66000008000017900","624350","6615","","65448000000");"
}
Add(Button,11723835,189,203)
{
Left=285
Top=80
link(onClick,8185137:doEvent1,[])
}
Add(Edit,9916722,434,287)
{
Left=345
Top=80
Width=100
Text=""
}
Add(StrList,4004521,315,105)
{
FileName="log2.txt"
}
Add(Hub,8185137,245,203)
{
OutCount=5
link(onEvent1,4004521:doLoad,[(287,209)(287,139)])
link(onEvent2,7401949:doStart,[])
link(onEvent3,5889051:doPos,[(287,223)(287,293)])
link(onEvent4,7401949:doStop,[(347,230)(347,223)])
link(onEvent5,2668518:doLength,[(282,237)(282,363)])
}
Add(TimeCounter,7401949,434,210)
{
link(onStop,2953706:doCaption,[(481,223)(481,91)(177,91)(177,167)])
}
Add(Length,2668518,385,357)
{
link(onLength,923927:doText,[])
link(Str,5209601:Var3,[(391,271)])
}
Add(GetDataEx,5209601,322,266)
{
link(Data,6864257:Text,[])
}
Add(Edit,923927,434,357)
{
Left=615
Top=5
Width=90
Text=""
}

карма: 22

0