Вверх ↑
Ответов: 485
Рейтинг: 86
#1: 2009-09-14 23:49:40 ЛС | профиль | цитата
nesco писал(а):
Ты проверил условие, которое я привел, чем оно не устраивает, или выдает ошибку
Ошибок не выдает. Но. Логика работы точки doInsert это "вставить строку перед строкой с индексом из потока". Другими словами, "сдвинуть строки, индекс которых больше или равен индексу из потока, вниз и на освободившееся место вставить новую строку" При несуществующем индексе строка ИМХО вставляться не должна (как и сделано в оригинальном коде).
Такая (или подобная) правка
if (ind <> 0) and ((ind < 0) or (ind > FList.Count - 1)) then exit;
делает исключение только для пустого списка при индексе = 0.
А такая
if (ind < 0) or (ind > FList.Count) then exit;
и для пустого списка, и для заполненого.
А это может повлечь проблемы совместимости и(или) будет вызывать вопросы почему при несуществующем индексе строка то не вставляется, то вставляется (при ind=FList.Count)
карма: 0

0