Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Классы [D7, WinXP]


Laymer ©   (2006-06-01 08:22:00) 

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


ЮЮ   (2006-06-01 09:50:00) [1]


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


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

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

var
 FMyObjects: TObjectList
...

 FMyObjects := TObjectList.Create( true);

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

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

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


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

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


MBo   (2006-06-01 09:08:00) [3]

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 08:58:00) [4]

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


MBo   (2006-06-01 08:36:00) [5]

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


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


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

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


MBo   (2006-06-01 08:25:00) [7]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо