Показать сообщение отдельно
  #13  
Старый 14.10.2011, 21:43
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

И всё равно, пару слов скажу:
Код:
procedure TForm1.DeleteIco;
...
  if tmp = Length(Ims) - 1 then //если в данной папке перемещаем последнюю папку то тег не получиться взят от следующей иконки
    buf := Copy(MainT.text, Ims[tmp].Tag, LastFpos - ims[tmp].Tag) //для этого есть last icon pos
  else
    buf := Copy(MainT.text, Ims[tmp].Tag,Ims[tmp + 1].tag - Ims[tmp].Tag)//текст выделенной иконки
  // Когда сюда попадёт условие выборки?
  else //если приложеине то скопируем тег до символа >
    buf := Copy(MainT.text, ims[tmp].Tag, PosEx('>', MainT.Text, ims[tmp].Tag) + 1 - Ims[tmp].Tag);
...
  // Предположим, что длина Poslist = 2. Тогда при первой итерации идёт обращение Poslist[1], а уже при 2!!! - Poslist[3]. Откуда массив длиной в 2 единицы (0..1) возьмёт 3, то есть длину массива = 4!!! (0..3)
  for j := 0 to Length(PosList) - 1 do
    PosList[j * 2 + 1] := Poslist[j * 2 + 1] - SelectedIcons[i + 1];//укорачиваем позиции всех открытых папок
...
end;

procedure TForm1.MoveContnt(Sender: TObject);
...
  // тоже, что и в предыдущем случае
  for j := 0 to Length(PosList) - 1 do
    PosList[j * 2] := Poslist[j * 2] + length(buf); // обновляем позиции всех открытых папок
...
end;
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием