![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| Ak47black |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
Здравствуйте.
Столкнулся с проблемой. Хочу сделать класс в котором был бы компонент TClientSocket. При создании класса происходил Connect и если неудавалось подсоединится то класс сам уничтожал себя. Вот код как я пытаюсь сделать Unit1
Con_Unit
Естественно вылетает (потомучто Destroy делается одновременно с Create)
А как тут можно сделать без ошибки (я чтото запутался)? Какие есть идеи? Присоединённый файл ( Кол-во скачиваний: 3 )
SelfDestruct.rar 2,66 Kb |
||||||
|
|||||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
вместо прямого вызова деструктора выкидывай исключение. Если в конструкторе возникает исключение то деструктор будет вызван автоматом. Поэтому деструктор должен уметь уничточтожать недосозданные объекты
-------------------- Обижено школьников: 8 |
|||
|
||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
А если ошибка подсоединения произойдет после Create.
Как правильно тут сделать, без ошибок. Это сообщение отредактировал(а) Ak47black - 10.12.2007, 21:22 |
|||
|
||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
У когонибудь можеть есть идея как правильно убить TClientSocket
Это сообщение отредактировал(а) Ak47black - 10.12.2007, 21:38 |
|||
|
||||
| Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 1 Всего: 60 |
сделать отдельные процедуры для конекта типа myconect и в ней создовать сразу класс сокета подставлять все процедуры к классу сокета ну естественно в процедуре у сокета в события если ерор то уничтожаем класс сокета . если дисконект то уничтожаем класс сокета.
я делал подобное только с ицс если у меня сечаз нет не кончится отвечу еше. Добавлено через 14 минут и 31 секунду аналогично также и на сокетах... но лучше ICS подержка проксе и слл итд возможностей все желучше чем обычный сокет клиент
-------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
| Ak47black |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
Sanchezzz, в вышеприведенном коде, я вижу одно главное отличие (если не считать поддержку proxy)
тоесть ты вначале закрываешь сокет, а после освобождаешь. Попробовал я это сделать с TClientSocket но тоже ошибка
Возможно я неправ. |
||||
|
|||||
| Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 1 Всего: 60 |
а ты можешь сразу уничтожать free должно работать или делать проверку на ICS он такого вроде не выдавал у меня.
ой я забыл в ставить FWsoketConnect; в создание... В дестрое можно написать такое
подчти во всех события советую проверять активен ли? сокет Это сообщение отредактировал(а) Sanchezzz - 11.12.2007, 20:05 -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
Дестрой то он делает.
Но класс юзает потоки и чтобы благополучно завершить нужно дождаться окончания их работы. Тут надо другой выход искать мне. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |