Показать сообщение отдельно
  #5  
Старый 04.08.2011, 13:48
TotKtoNado TotKtoNado вне форума
Начинающий
 
Регистрация: 28.12.2010
Адрес: Сургут
Сообщения: 103
Версия Delphi: 2010
Репутация: -3238
По умолчанию

Цитата:
Сообщение от Aristarh Dark
Я логики работы понять не могу:
1. Получили индекс выделенной строки в визуальном объекте.
2. Удалили предыдущую строку в визуальном обхекте (если выделена первая строка - весело упали)
3. Некий невизуальный объект (скорее всего динамический массив записей) инициализируется по индексу визуального из п.1. Если длина массива (если это конечно массив, а все говорит об этом) меньше чем i+1 то опять же весело упали.
4. Устанавливаем длину массива на 1 меньшую чем полученный в п.1 индекс. Это вообще не понятно зачем, предыдущая инициализация (п.3) тогда вообще теряет смысл, ибо элемент этот остаётся "за бортом" причем не просто "за бортом", а уверенно так, ибо его индекс после операции по изменению длины стал бы Hihg(ItemList)+2.
Короче код очень труден для понимания.
ну ты мне сказал что Скорее всего у тебя i за пределами длины ItemList
а на счет пункта 4 то я его взял на примере кода
Код:
i := Length(ItemList);
      //Узнаем сколько осталось строк в массиве
      SetLength(ItemList, i + 1);
      //создается новая строка в массиве
Если этот код создает строку то мне надо на оборот удалить строку
Код:
i := Length(ItemList);
      //Узнаем сколько осталось строк в массиве
      SetLength(ItemList, i - 1);
      //создается новая строка в массиве
Ответить с цитированием