Главная страница
    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.037 c
3-1100182927
Katrin
2004-11-11 17:22
2004.12.12
Тригер и переменные


3-1100103967
MORA
2004-11-10 19:26
2004.12.12
Связи...


14-1101101656
Slider007
2004-11-22 08:34
2004.12.12
Два вопроса по настройке Windows XP (sp2)


4-1099122248
Сигизмунд
2004-10-30 11:44
2004.12.12
Как нйти метку диска?


6-1096520227
Луарвик
2004-09-30 08:57
2004.12.12
TidTCPClient





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский