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

Вниз

Очищать ли список?   Найти похожие ветки 

 
Студент_1234   (2012-07-13 20:24) [0]



procedure AddList(List: TList);
var
 PInfo: PDIDeviceInstance;
begin
 New(PInfo);
 List.Add(PInfo);
end;

procedure CleanupList(List: TList);
var
 i: LongInt;
begin
 For i:= 0 to List.Count - 1 do
   Dispose(List[i]);
end;

var
 List: TList;
begin
   List:= TList.Create;
   try
     AddList(List); // n-е кол-во раз.
   finally
     CleanupList(List); // *
     List.Free;
   end;



* - Вызывать ли эту функцию для очистки списка?


 
DayGaik   (2012-07-13 20:34) [1]

Да.

Кстати твой код нерабочий.
Надо так:
Dispose(PDIDeviceInstance(List[i]));

А вообще для этих дел лучше наслодовать TList


 
RWolf ©   (2012-07-13 21:04) [2]

Нормальный код, процедуре Dispose не интересен тип указателя.


 
Дмитрий С ©   (2012-07-13 21:54) [3]


> RWolf ©   (13.07.12 21:04) [2]

Вы неправы.

program Project5;

{$APPTYPE CONSOLE}

type
 PSomeRecord = ^TSomeRecord;
 TSomeRecord = record
   Value: String;
 end;

 procedure Test;
 var
   TypedPtr: PSomeRecord;
   UntypedPtr: Pointer;
 begin
   New(TypedPtr);
   TypedPtr^.Value := "Foo";
   UntypedPtr := TypedPtr;
   Dispose(UntypedPtr);
 end;
begin
 ReportMemoryLeaksOnShutdown := True;
 Test;
end.


 
RWolf ©   (2012-07-13 23:49) [4]


> [3]

да, верно — Finalize при освобождениии памяти через бестиповый указатель не вызывается.


 
Студент_1234   (2012-07-14 08:57) [5]

Т.е. получается CleanupList нужно вызывать, + при этом указывая тип указателя?


procedure CleanupList(List: TList);
var
i: LongInt;
begin
For i:= 0 to List.Count - 1 do
  Dispose(PDIDeviceInstance(List[i]));
end;


 
Дмитрий С ©   (2012-07-14 14:19) [6]


> Студент_1234   (14.07.12 08:57) [5]

Да.


 
Куку   (2012-07-14 18:10) [7]

~
System.Generics.Collections.TObjectList<TDIDeviceInstance>



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

Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 8.91 c
15-1328606117
Димка На
2012-02-07 13:15
2013.03.22
Строки-константы в delphi XE


15-1339432139
Лаура
2012-06-11 20:28
2013.03.22
Компоненты


2-1333499708
Dron55555555555
2012-04-04 04:35
2013.03.22
Дробные числа 2


15-1344112205
Юрий
2012-08-05 00:30
2013.03.22
С днем рождения ! 5 августа 2012 воскресенье


15-1340314077
ZV
2012-06-22 01:27
2013.03.22
Компонент Async32 не работает в С++





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