Вверх ↑
Разработчик
Ответов: 26170
Рейтинг: 2127
#1: 2008-05-18 01:13:57 ЛС | профиль | цитата
Tad, мне не понравилось, что отсчет идет не учитывая стартовой позиции от конца, это надо бы учесть. Те, если Pos=3, а Count=-4, то надо отступить 3 символа от конца и скопировать 4 символа влево.

------------ Дoбавленo:


Короче, это будет выглядеть так, полностью симметрично


procedure THICopy._work_doCopy;
var str:string;
Pos,Count:integer;
begin
str := ReadString(_Data,_data_Str,');
if str <> ' then begin
Count := ReadInteger(_Data, _data_Count, _prop_Count);
Pos := ReadInteger(_Data, _data_Position, _prop_Position);
if Count < 0 then begin // если отрицательное, то копируется с конца.
Pos := Length(str) + Count + 2 - Pos;
Count := Abs(Count);
end;
if Pos <= 0 then begin
Inc(Count, Pos-1);
Pos := 1;
end;
_hi_CreateEvent(_Data, @_event_onCopy, Copy(str,Pos,Count));
end;
end;

------------ Дoбавленo:


Ну тут возникает проблема совместимости -- кто-нибудь использовал отрицательный счетчик в своих целях, вот этого я не знаю
карма: 22

0