Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > C/C++: Сетевое программирование > recv POP3


Автор: vtg 10.07.09, 14:41
Почему после работы следующего кода MessageBox показывает кракозяблики?
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    CString szUser, szBuffer;
    .
    .
    .
    szUser=_T("USER XXXXXX@mail.ru");
    const TCHAR* pUser = szUser.GetBuffer();
    send(hSocket, (const char *)pUser, szUser.GetLength(), 0);
    TCHAR* pBuffer = szBuffer.GetBuffer(256);
    int dwRet = recv(hSocket, (char *)pBuffer, 256,0);
    MessageBox(0, szBuffer.GetBuffer(), 0,MB_OK);

Автор: Алексей_Л 10.07.09, 20:53
szBuffer нигде не инициализируется, ты же recv'ом в pBuffer пишешь, а в MessageBox() отображаешь szBuffer!

P.S. Полезный совет: не мешай MFC-строки с си-строками, где это не нужно, это и привело к путанице

Автор: vtg 16.07.09, 09:52
А почему, тогда, так
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    CString szUser, szBuffer;
    .
    .
    .
    szUser=_T("USER XXXXXX@mail.ru");
    send(hSocket, (const char *)szUser.GetBuffer(), szUser.GetLength(), 0);
    int dwRet = recv(hSocket, (char *)szBuffer.GetBuffer(256), 256,0);
    MessageBox(0, szBuffer.GetBuffer(), 0,MB_OK);

MessageBox показывает то же?

Автор: Alexandoros 16.07.09, 10:28
Цитата
If you use the pointer returned by GetBuffer to change the string contents, you must call ReleaseBuffer before using any other CSimpleStringT member methods.

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