Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Поведение конструктора TClientSocket


Автор: Pori 16.4.2010, 15:21
Всем привет!

Столкунлся с одной занятной проблемой. Проблема встала в проекте, но приведу её на небольшом отдельном примере, дабы каждый смог её протестить.

Итак, код:

Код

    TClientSocket *ClientSocket1;
    ClientSocket1 = new TClientSocket(NULL);

    ClientSocket1->ClientType = ctBlocking;
    ClientSocket1->Port = 80;

    ClientSocket1->Host = "mail.ru";
    ClientSocket1->Open();
    ClientSocket1->Close();

    delete ClientSocket1;


Не забываем
Код

#include <ScktComp.hpp>


Ставим этот код, напирмер, на обработчик кнопки. Запускаем программу. Тыкаем один раз по кнопке. Отработала нормально. Тыкаем еще несколько (обычно хватает еще одного) раз по кнопке, программа виснет. Виснет в разных моментах. Иногда при создании объекта
Код

ClientSocket1 = new TClientSocket(NULL);

иногда при открытии сокета
Код

ClientSocket1->Open();


Если добавить на форму компонент TClientSocket, то зависание прекращается и все работает отлично. Собственно вопрос, почему так? Может при добавлении/удалении объекта линковщик какие-то либы не подключаются? Но тогда странно, почему первый раз сокет отрабатывает.

Помнится, пару лет назад замечал такие траблы и с другими классами. Только вот уже не помню с какими.

Буду очень благодарен, если объясните, почему так происходит...

PS: сейчас работаю на C++Builder 2009 На других не пробовал скомпилить, но, думаю, будет так же

Автор: _Dimon_ 17.4.2010, 02:13
Цитата(Pori @  16.4.2010,  15:21 Найти цитируемый пост)
PS: сейчас работаю на C++Builder 2009 На других не пробовал скомпилить, но, думаю, будет так же


Пробовал твой код на 2010 - все нормально, хоть 100 раз кнопку нажимай...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)