Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.025 c
1-1101715077
bodomizer
2004-11-29 10:57
2004.12.12
Огромные объёмы данных и работа с ними


3-1100087184
ruslanyd
2004-11-10 14:46
2004.12.12
Среднее между TDBLookupListBox и TListBox


1-1101354943
Кто---то
2004-11-25 06:55
2004.12.12
Как проще обменять шрифты двух комбобоксов ?


4-1098782955
Aleksandr.
2004-10-26 13:29
2004.12.12
Почему DispatchMessage выдает AV?


1-1101704042
Dreamse
2004-11-29 07:54
2004.12.12
Проблема с TreeView




   Наверх