Shurick V Гость
|
Добавлено: Пт Дек 07 2001 23:10 Заголовок сообщения: Проблема с TClientSocket и компонентом. C++ Builder 5.0. |
|
|
Вопрос такой - стал переписывать TSakEmail с Дельфей (ну, надо мне оно - собственный POP3-клиент в урезанном варианте под С++ Билдер, но такая штука получается: если я пишу отдельное приложение, на форму кладу TClientSocket, ставлю ClientType=ctBlocking, Port=110, Host=192.168.0.2 //ну, прокси у меня там, через нее на POP3 хожу. И потом по обработчику Button1Click происходит следующее: char * buff=new char[1024]; int i=FSocket-Socket-ReceiveBuf(buff,1024); delete buff; .... Все в порядке. Получаю нечто сродни +OK Proxy ready. Как только я пишу в процедуре компонента аналогичный код: AnsiString __fastcall TPOP3Client::FReceiveTextFromSocket(void) { Application-ProcessMessages(); char * buff=new char[1024]; FPOPError=false; int i=FSocket-Socket-ReceiveBuf(buff,1024);//Вот на этом месте вылетает ошибка. AnsiString s=AnsiString(buff); delete buff; .... } То получаю сообщение о AccessViolation. Read of address FFFFFFFF... Что с этим делать? Как лечить? ЗЫ. Конструктор выглядит так: __fastcall TPOP3Client::TPOP3Client(TComponent* Owner) : TComponent(Owner) { FConnected=false; FPort=110;//POP3 port if (!ComponentState.Contains(csDesigning)) { FSocket=new TClientSocket(NULL); FSocket-ClientType=ctBlocking; FSocket-Port=FPort; FSocket-OnLookup=FDoLookup; FSocket-OnConnect=FDoConnect; FSocket-OnConnecting=FDoConnecting; FSocket-OnDisconnect=FDoDisconnect; FSocket-OnError=FDoError; }; }
FSocket объявлен в private-секции класса. |
|