Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

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

 
Студент_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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.058 c
2-1345708838
Molchanov
2012-08-23 12:00
2013.03.22
Высокоскоростной обмен с аппаратурой


2-1330947283
Vyacheslav
2012-03-05 15:34
2013.03.22
Две формы: FormStyle=fsStayOnTop.. Form2 всегда выше Form1?


4-1264044596
Winni
2010-01-21 06:29
2013.03.22
Как создать ярлык ?


15-1340742529
Дмитрий С
2012-06-27 00:28
2013.03.22
О стиле "неубиваемого" кода.


15-1329458550
coward
2012-02-17 10:02
2013.03.22
FreeSoft AV