Главная страница
    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.57 MB
Время: 0.063 c
1-1101900116
ANDREI
2004-12-01 14:21
2004.12.12
sos


8-1093948946
Сашок
2004-08-31 14:42
2004.12.12
Отступ от точек


3-1100496152
AdmSasha
2004-11-15 08:22
2004.12.12
поиск по маске в базе


9-1092134680
Micah'GF
2004-08-10 14:44
2004.12.12
Фракталы


1-1101491736
AlexHawk
2004-11-26 20:55
2004.12.12
Как сделать титры





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