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

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

Как узнать создал ли объект ?


besen-ok ©   (2004-06-17 10:39:00) 

В программе создаю объет
         SSocket := TServerSocket.Create(Nil);
Проблема в том что могу создать его повторно, есть ли способ проконтролировать создан ли он уже или еще нет ? А то не хочется делать через доп константу ...


Sandman25   (2004-06-17 10:50:00) [1]

[6] Тимохов ©   (17.06.04 10:47)

Тогда ему может пригодиться пул сокетов и классовая функция, возвращающая сокет с нужными свойствами (создающая новый объект в случае необходимости) :)


Тимохов   (2004-06-17 10:47:00) [2]


> Sandman25 ©   (17.06.04 10:43) [4]

согласен.
но может автору интересно будет узнать что-то новое, хоть и не ответ на вопрос. :)))


evvcom   (2004-06-17 10:44:00) [3]


> А то не хочется делать через доп константу ...

Константы и переменные - разные понятия.

> Проблема в том что могу создать его повторно, есть ли способ
> проконтролировать создан ли он уже или еще нет ?

А SSocket проверить трудно?


Sandman25   (2004-06-17 10:43:00) [4]

[3] Тимохов ©   (17.06.04 10:42)

Это только для singleton'ов сработает


Романов Р.В.   (2004-06-17 10:42:00) [5]

if not Assigned(SSocket) then

тогда удалять его нужно так
FreeAndNil(SSocket)


Sandman25   (2004-06-17 10:42:00) [6]

if not Assigned(SSocket) then
 SSocket := TServerSocket.Create(Nil);

FreeAndNil(SSocket)


Тимохов   (2004-06-17 10:42:00) [7]

Сделайте потомка от TServerSocket
Воспользуйтесь виртуальным методом NewInstance.
Переопределите его
если создаете первый раз, то запишите созданный объект в переменную (объявленную под implementaion).
если создаете еще раз и переменная не равна nil, то ничего не создаете, а возвращаете раннее созданный объект.

Также все это надо учесть в freeinstance.


Наверх

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