Вниз
Скачать: CL | DM;

Классы   Найти похожие ветки 

 
Laymer   (2006-06-01 08:22) [0]

Доброе время суток!!!
У меня есть некий класс, который я сам сотворил. Создал несколько объектов этого класса. По ходу выполнения программы у меня эти объекты уничтожаются.
Как можно узнать всели объекты этого определенного класса унечтожены???
Заранее благодарю!!


 
MBo ©   (2006-06-01 08:25) [1]

В implementation модуля с классом ввести переменную-счетчик, конструктор класса ее инкрементирует, а деструктор уменьшает.
Для доступа к ней на чтение - например, class function


 
Laymer   (2006-06-01 08:29) [2]


> MBo ©   (01.06.06 08:25) [1]

А по подробней можно


 
MBo ©   (2006-06-01 08:36) [3]

Хм.. что именно непонятно?


 
Laymer   (2006-06-01 08:58) [4]

Не понятно как использовать переменную-счетчик


 
MBo ©   (2006-06-01 09:08) [5]

unit Unit2;

interface
type
 TMy = class
 public
   constructor Create;
   destructor Destroy; override;
   class function MyCount: Integer;
 end;

implementation
var
 MyCnt: Integer = 0;

 { TMy }

constructor TMy.Create;
begin
 Inc(MyCnt);
end;

destructor TMy.Destroy;
begin
 Dec(MyCnt);
 inherited;
end;

class function TMy.MyCount: Integer;
begin
 Result := MyCnt;
end;

end.

//----------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
 i: Integer;
 M1, M2: TMy;
begin
 Memo1.Lines.Add(IntToStr(TMy.MyCount));
 M1 := TMy.Create;
 M2 := TMy.Create;
 Memo1.Lines.Add(IntToStr(TMy.MyCount));
 M2.Free;
 Memo1.Lines.Add(IntToStr(TMy.MyCount));
 M1.Free;
 Memo1.Lines.Add(IntToStr(TMy.MyCount));
end;


 
Laymer   (2006-06-01 09:46) [6]

Понятно, большое спасибо!!! :о)
:о))))


 
ЮЮ ©   (2006-06-01 09:50) [7]


> Как можно узнать всели объекты этого определенного класса
> унечтожены???


И что, знание того, что не все объекты уничтожены, тебя спасет?.

Для этих целей есть TObjectList, а у его метода Create есть параметр, является ли список собственником объектов.

var
 FMyObjects: TObjectList
...

 FMyObjects := TObjectList.Create(true);

  FMyObjects.Add(TMyClass.Create); - создание объекта и сохранение ссылки на него в списке

  FMyObjects.Delete(i) - удаление объекта из списка и его уничтожение
 
  FMyObjects[i] := nil; - уничтожение объета и обnilение ссылки

  FMyObjects.Clear; - очистка списка и уничтожение объектов.



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

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



Память: 0.46 MB
Время: 0.026 c
2-1148894742
Kolan
2006-05-29 13:25
2006.06.18
Как сделав один модуль использовать его в разных проектах.


2-1149166251
newbie2
2006-06-01 16:50
2006.06.18
Как удалить объекты?


1-1147597832
Monax
2006-05-14 13:10
2006.06.18
Как установить размер страницы при печати через Printer


2-1149008846
Лыган
2006-05-30 21:07
2006.06.18
Подскажите


1-1147212202
Германн
2006-05-10 02:03
2006.06.18
TListView




   Наверх