Главная страница
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.155 c
15-1351951907
brother
2012-11-03 18:11
2013.03.22
Антивирус на win2008 x64


4-1261716293
GENAONYX
2009-12-25 07:44
2013.03.22
Матричные принтеры, печать на рулоны в XP


15-1337084520
Max
2012-05-15 16:22
2013.03.22
аналог AsProtect


15-1335126602
Юрий
2012-04-23 00:30
2013.03.22
С днем рождения ! 23 апреля 2012 понедельник


2-1338573991
fShtein
2012-06-01 22:06
2013.03.22
EhLib компонент