
14.10.2011, 21:43
|
 |
.
|
|
Регистрация: 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 в.д.
|