Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.11;
Скачать: CL | DM;

Вниз

Не получается правильно удалить объект   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.058 c
3-1130265477
Xerx
2005-10-25 22:37
2005.12.11
Информация по работе с Paradox


9-1121778842
-virus-
2005-07-19 17:14
2005.12.11
Как делать анимацию (2D)?


1-1132056378
simpson
2005-11-15 15:06
2005.12.11
ListView.OwnerDraw - не меняется высота Item


4-1129190985
312Kbps
2005-10-13 12:09
2005.12.11
Имя пользователя в домене !


2-1132602966
Антоха
2005-11-21 22:56
2005.12.11
Наипростешая програмка