Форум: "Основная";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
ВнизКак узнать создал ли объект ? Найти похожие ветки
← →
besen-ok (2004-06-17 10:39) [0]В программе создаю объет
SSocket := TServerSocket.Create(Nil);
Проблема в том что могу создать его повторно, есть ли способ проконтролировать создан ли он уже или еще нет ? А то не хочется делать через доп константу ...
← →
Романов Р.В. © (2004-06-17 10:42) [1]if not Assigned(SSocket) then
тогда удалять его нужно так
FreeAndNil(SSocket)
← →
Sandman25 © (2004-06-17 10:42) [2]if not Assigned(SSocket) then
SSocket := TServerSocket.Create(Nil);
FreeAndNil(SSocket)
← →
Тимохов © (2004-06-17 10:42) [3]Сделайте потомка от TServerSocket
Воспользуйтесь виртуальным методом NewInstance.
Переопределите его
если создаете первый раз, то запишите созданный объект в переменную (объявленную под implementaion).
если создаете еще раз и переменная не равна nil, то ничего не создаете, а возвращаете раннее созданный объект.
Также все это надо учесть в freeinstance.
← →
Sandman25 © (2004-06-17 10:43) [4][3] Тимохов © (17.06.04 10:42)
Это только для singleton"ов сработает
← →
evvcom © (2004-06-17 10:44) [5]
> А то не хочется делать через доп константу ...
Константы и переменные - разные понятия.
> Проблема в том что могу создать его повторно, есть ли способ
> проконтролировать создан ли он уже или еще нет ?
А SSocket проверить трудно?
← →
Тимохов © (2004-06-17 10:47) [6]
> Sandman25 © (17.06.04 10:43) [4]
согласен.
но может автору интересно будет узнать что-то новое, хоть и не ответ на вопрос. :)))
← →
Sandman25 © (2004-06-17 10:50) [7][6] Тимохов © (17.06.04 10:47)
Тогда ему может пригодиться пул сокетов и классовая функция, возвращающая сокет с нужными свойствами (создающая новый объект в случае необходимости) :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.036 c