Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.038 c
1-1101891672
Галинка
2004-12-01 12:01
2004.12.12
Как динамически создать рисунок на форме


6-1096623637
TUser
2004-10-01 13:40
2004.12.12
ICS под XP


1-1101551535
Артем Владимирович
2004-11-27 13:32
2004.12.12
Как стереть самого себя


1-1101892691
big noob
2004-12-01 12:18
2004.12.12
подскажите алгоритм как число написать прописью


1-1101416797
Bobby Digital
2004-11-26 00:06
2004.12.12
Runtime Error





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский