1. 程式人生 > >VC6自帶的MFC4.2中CString.Format與CRecordSet的相容性問題

VC6自帶的MFC4.2中CString.Format與CRecordSet的相容性問題

誰說不會?你嘗試賦給你的變數一個長度超過256的字串試試,肯定出錯,我試過了。
那麼,這個256又是何處來的?你在用一個RecordSet第一步一定是Open吧。跟蹤一下發現,Open中有一步是BindFieldToColumns (dbcore.cpp 3854),經過一系列的分發,程式到了dbrfx.cpp 777:

case CFieldExchange::BindFieldToColumn:
...
// Constrain to user specified max length, subject to 256 byte min
if (cbColumn > (UINT)nMaxLength || cbColumn < 256)
    cbColumn = nMaxLength;// Set up binding addres
void* pvData;
value.GetBufferSetLength(cbColumn+1);
pvData = value.LockBuffer();    // will be overwritten if UNICODE

那麼這個nMaxLength是多少呢?這個看看AfxDB.h中對於RFX_Text的宣告,255!
明白了?