Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.067 c
2-1336118119
igorium
2012-05-04 11:55
2013.03.22
Как открыть папку в проводнике (вид - эскиз)


15-1344450199
ppoko
2012-08-08 22:23
2013.03.22
w8


1-1298886494
harisma
2011-02-28 12:48
2013.03.22
Упаковка массива рекордов в олевариант


15-1351230168
брат Птибурдукова
2012-10-26 09:42
2013.03.22
108%!!!!!!111


6-1264768116
RGaysin
2010-01-29 15:28
2013.03.22
TIdIrc русские символы




   Наверх