Главная страница
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.038 c
3-1130416819
Андрей Жук
2005-10-27 16:40
2005.12.11
Из какой вьюхи получить список полей таблиц в Oracle?


1-1131711566
olhovik
2005-11-11 15:19
2005.12.11
Проблема в ListBoxе


4-1128481280
Rentgen
2005-10-05 07:01
2005.12.11
Изменить настройки БИОСа компьютера через RS232


2-1132835209
fast2
2005-11-24 15:26
2005.12.11
Как узнать дату создания файла?


14-1132697502
NightLord
2005-11-23 01:11
2005.12.11
Новая дыра в IE