Galkov писал(а):
Так поставь защиту на отрицательные значения в методах doPosition всех элементов.не согласен с таким подходом. Во всяком случае до тех пор, пока мы не определимся какой пакет делаем - максимально надежный или повозможности быстрый. Конечно к стандартному пакету это относится мало, но все же не стоит приучать пользователя к лени. А своими проверками вы это как раз и делаете. Начинающему хорошо - за него все случае предусмотрены, а опытному беда - обойти эти проверки он не может, хотя знает, что в данной конкретной схеме они глупы и бессмыслены...
Уж если есть такое желание предупредить все глупости пользователя, которые он может сделать то хотя бы стоит ввести дефайн, без которого весь этот мусор не будет попадать в проект. Например:
#pas
str := ReadString(_Data,_data_Str,');
{$IFDEF _lamer_mode_}
if str <> ' then begin
{$ENDIF}
Pos := ReadInteger(_Data, _data_Position, _prop_Position);
Count := ReadInteger(_Data, _data_Count, _prop_Count);
if _prop_Direction = 1 then Pos := Length(str) - Count - Pos + 2;
{$IFDEF _lamer_mode_}
if Pos <= 0 then begin
Inc(Count, Pos-1);
Pos := 1;
end;
{$ENDIF}
_hi_CreateEvent(_Data, @_event_onCopy, Copy(str,Pos,Count));
{$IFDEF _lamer_mode_}
end;
{$ENDIF}