Вверх ↑
Разработчик
Ответов: 4698
Рейтинг: 426
#1: 2010-04-19 22:16:23 ЛС | профиль | цитата
Скажите мне, чем отличается моя функция PosEx и PosEx текущая, кроме времени ее исполнения ( ), а так же, почему нельзя стандартную заменить на мою (совместимости это не перечит)
#pas
function PosEx(const SubStr, S: string; Offset: Cardinal = 1): Integer;
var str:string;
i:integer;
begin
str := '';
Result := 0;
if offset > 0 then begin
str := CopyEnd(substr,offset);
i := Pos(str,s);
if i > 0 then Result := i + offset - 1;
end else Result := pos(substr,str);
end;
А так же схемка теста времени
Add(MainForm,2953706,21,105)
{
Width=163
Height=143
}
Add(InlineCode,11935733,371,161)
{
@Hint=#8:Standart|
WorkPoints=#5:doPos|
EventPoints=#5:onPos|
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|21: onPos:THI_Event;|5: |50: procedure doPos(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|28:procedure THiAsmClass.doPos;|5:begin|48: _hi_onEvent(onPos,PosEx('123','s123s123s',3));|4:end;|0:|4:end.|
link(onPos,14267925:doText,[])
AddHint(34,-61,55,13,@Hint)
}
Add(InlineCode,16698845,371,224)
{
@Hint=#2:My|
WorkPoints=#5:doPos|
EventPoints=#5:onPos|
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|21: onPos:THI_Event;|5: |50: procedure doPos(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|74:function PosEx2(const SubStr, S: string; Offset: Cardinal = 1): Integer;|15:var str:string;|14: i:integer;|5:begin|13: str := '';|15: Result := 0;|27: if offset > 0 then begin|35: str := CopyEnd(substr,offset);|21: i := Pos(str,s);|44: if i > 0 then Result := i + offset - 1;|38: end else Result := pos(substr,str);|4:end;|0:|28:procedure THiAsmClass.doPos;|5:begin|49: _hi_onEvent(onPos,PosEx2('123','s123s123s',3));|4:end;|0:|4:end.|
link(onPos,6078964:doText,[])
AddHint(58,76,29,13,@Hint)
}
Add(For,10753889,322,161)
{
End=100000
@IsLib=True
link(onEvent,11935733:doPos,[])
link(onStop,3504164:doStop,[(366,174)(366,162)(261,162)(261,174)])
}
Add(For,4107591,322,224)
{
elink(10753889)
link(onEvent,16698845:doPos,[])
link(onStop,13453645:doStop,[(366,237)(366,225)(261,225)(261,237)])
}
Add(Button,14588975,189,161)
{
Left=5
Top=10
Caption="test"
link(onClick,14186092:doEvent1,[])
}
Add(Hub,14186092,238,161)
{
link(onEvent1,3504164:doStart,[])
link(onEvent2,13453645:doStart,[(262,174)(262,230)])
}
Add(TimeCounter,3504164,273,161)
{
link(onStart,10753889:doFor,[])
link(onStop,3014420:doText,[(312,174)(312,181)])
}
Add(TimeCounter,13453645,273,224)
{
link(onStart,4107591:doFor,[])
link(onStop,5385417:doText,[(313,237)(313,223)])
}
Add(Message,11704833,525,196)
{
}
Add(Edit,14267925,420,161)
{
Left=70
Top=10
}
Add(Edit,6078964,420,224)
{
Left=70
Top=35
}
Add(Edit,3014420,469,175)
{
Left=70
Top=70
Text="time1"
link(onChange,6782821:doWork1,[(513,181)])
}
Add(Edit,5385417,469,217)
{
Left=70
Top=95
Text="time2"
link(onChange,6782821:doWork3,[(513,223)])
}
Add(HubEx,6782821,509,196)
{
link(onEvent,11704833:doMessage,[])
}
P.S: у меня результаты таковы: time1 = 3300; time2 ~ 3040
карма: 10
0