Форум: "Начинающим";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];
ВнизНе получается правильно удалить объект Найти похожие ветки
← →
CMOS © (2005-11-19 21:32) [0]Делаю неправильно - прога работает. Правильно вешается.
Я создал массив объектов. Чтобы удалить n-ый объект я присваиваю все значения последнего (gMax-1) объекта в массиве n-му. Затем уничтожаю последний (g[gMax-1].Free|Destroy) и уменьшаю размер массива на 1. Таким образом внешне кажется что n-ый объект уничтожился, на самом деле он встал на место последнего, сохранил он только свой номер n.
Все это происходит в методе Die.
g[n].Die
Если объявляю этот метод как обычный то "Project raised exception class EAccessViolation..."
Если как деструктор, то все работает правильно. Но ведь в этом случае едаляется n-ый элемент, a максимальный должен остаться существовать? Вот код:destructor Life.Die;
var m: Word;
begin
m:= fg[x, y];
f[x, y]:= f[x, y] xor 1;
fg[g[gMax-1].x, g[gMax-1].y]:= m;
g[m]:= g[gMax-1];
//g[gMax-1].Free;
Dec(gMax);
SetLength(g, gMax);
end;
← →
Virgo_Style © (2005-11-19 21:36) [1]http://delphimaster.net/view/2-1132392584/
http://delphimaster.net/view/2-1132392584/
Может быть, хватит уже писать, и пора прочитать, что написали тебе в ответ?
← →
Джо © (2005-11-19 21:57) [2]Чукча не читатель...
← →
CMOS © (2005-11-20 20:25) [3]Там ничего нет (сам загляни)
← →
Brother © (2005-11-21 06:05) [4]
> http://delphimaster.net/view/2-1132392584/
> http://delphimaster.net/view/2-1132392584/
>
> Может быть, хватит уже писать, и пора прочитать, что написали
> тебе в ответ?
Хе, долго смеялся!
← →
tesseract © (2005-11-21 10:27) [5]Используй Tlist.
Если хочешь написать сам, то вот исходный код EzDSL - очень хорошей библиотеки (несколько устарела но всё ещё интересна).
ftp.turbopower.com/pub/misc/funcs
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c