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

Вниз

Освобождение памяти   Найти похожие ветки 

 
Frozzen   (2004-11-24 18:31) [0]

Подскажите как правельно делать, имеется

TCoordPoint = class(TObject)
           x, y        :integer;
           lat, long   :real;
           r           :real;
....
end;

TPoints = object
    p   : array of TCoordPoint;
    Count : Integer;
    constructor Create(N : Integer);
    destructor Destroy;

...
end;

constructor TPoints.Create(N : Integer);
begin
 Count := N;
 SetLength(p, N);
end;

destructor TPoints.Destroy;
var i: Integer;
begin
for i := 0 to Count-1 do
  p[i].Destroy;            // или не так
SetLength(p, 0);
end;


 
Digitman ©   (2004-11-24 18:42) [1]

for i := 0 to Count-1 do
 p[i].Destroy;            // это вдан.случае не вызывает сомнений

SetLength(p, 0); //а это. пожалуй, лишнее

непонятно только, почему для сей цели используется не слишком удобный дин.массив, а не специально разработанный для побобных целей класс TObjectlist ..


 
Плохиш ©   (2004-11-24 19:05) [2]


> Digitman ©   (24.11.04 18:42) [1]
> for i := 0 to Count-1 do
>  p[i].Destroy;            // это вдан.случае не вызывает сомнений

.Free


 
Frozzen   (2004-11-24 19:10) [3]

Вот и я про Free думал


 
Dimaxx ©   (2004-11-24 22:08) [4]

Destroy и Free абсолютно идентичны по функциональности.


 
ЮЮ ©   (2004-11-25 03:47) [5]

>Destroy и Free абсолютно идентичны по функциональности.

Однако ОСВОБОДИТЬ звучит более гуманно, чем УНИЧТОЖИТЬ :)


 
begin...end ©   (2004-11-25 09:12) [6]


> [4] Dimaxx ©   (24.11.04 22:08)

> Destroy и Free абсолютно идентичны по функциональности.

Но Free всё же безопасней, чем Destroy, за счёт предварительной проверки на NIL.

Странно другое:

> Frozzen   (24.11.04 18:31)

> TPoints = object    


 
Bel ©   (2004-11-25 10:06) [7]

И еще странность:

> TCoordPoint = class(TObject)

Может, лучше record использовать.
А если всё-таки нужен class, то тогда где конструкторы элементов массива.


 
Frozzen   (2004-11-25 10:17) [8]

Все методы не писал сюда


 
Bel ©   (2004-11-25 11:19) [9]

Ну тогда ничего криминального. Только добавить в конструкторе:

...
for i := 0 to N - 1 do
  p[i] :=  TCoordPoint.Create;


А лучше воспользоваться > Digitman ©   (24.11.04 18:42) [1]



Страницы: 1 вся ветка

Текущий архив: 2004.12.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.025 c
14-1100851367
truster
2004-11-19 11:02
2004.12.12
Распаковка ZIPа в Far-e


3-1100069354
first_may
2004-11-10 09:49
2004.12.12
Ошибка...


4-1098544849
DL
2004-10-23 19:20
2004.12.12
Как получить уникальную информацию о компьютере


14-1100856519
dr Tr0jan
2004-11-19 12:28
2004.12.12
Игрушка на Pascal, Delphi


3-1100407007
Black
2004-11-14 07:36
2004.12.12
Ошибка при попытке изменения свойства ADOConnection