if (PathFileExists(pdlg->str_upLoadFilePath))
{
CFile file_load;
if (file_load.Open(pdlg->str_upLoadFilePath, CFile::modeRead))
{
DWORD file_len = (DWORD)file_load.GetLength();
pdlg->i_upLoadMaxNum = file_len / 512;
if (pdlg->i_upLoadMaxNum * 512 < file_len)
{
pdlg->i_upLoadMaxNum++;
}
char carr_fileData[512];
UINT u_readLen;
while (TRUE)
{
u_readLen = file_load.Read(carr_fileData, 512);
CString str_temp, str_data;
for (UINT i = 0; i < u_readLen; i++)
{
str_temp.Format(_T("%02X"), (BYTE)carr_fileData[i]);
str_data += str_temp;
}
pdlg->list_strUpFile->AddTail(str_data);
if (u_readLen < 512)
{
break;
}
}
}
file_load.Close();
}
讀檔案是在執行緒里,list_strUpFile是對話框類的成員
CStringList *list_strUpFile;//宣告
list_strUpFile = new CStringList;//初始化
POSITION pos = list_strUpFile->FindIndex(n);//讀其中的資料
str_data = list_strUpFile->GetAt(pos);
取資料的時候,當n大于560左右的時候就會報錯

請問,CStringList 如何可以存盤更多資料?
我的目的是讀多個檔案,檔案大小從1位元組---5M,想要把檔案截成512位元組一包發送出去,請問有什么更好的方法讀這些檔案?
uj5u.com熱心網友回復:
用char* new的記憶體。uj5u.com熱心網友回復:
Stack over, 停下來看看呼叫堆疊,是否存在遞回形式的呼叫?uj5u.com熱心網友回復:
使用 CStringArrayuj5u.com熱心網友回復:
你回圈讀取資料檔案資料,每次讀取512個位元組的資料,然后發送?
uj5u.com熱心網友回復:
對,發完還要用到檔案中的資料所以要保存起來
uj5u.com熱心網友回復:
stack overflow 是堆疊記憶體用完了,一般情況下就是檢查遞回的情況感謝 zgl7903
uj5u.com熱心網友回復:
if (PathFileExists(pdlg->str_upLoadFilePath))
{
CFile file_load;
if (file_load.Open(pdlg->str_upLoadFilePath, CFile::modeRead))
{
DWORD file_len = (DWORD)file_load.GetLength();
pdlg->i_upLoadMaxNum = file_len / 512;
if (pdlg->i_upLoadMaxNum * 512 < file_len)
{
pdlg->i_upLoadMaxNum++;
}
char carr_fileData[512];
UINT u_readLen;
while (TRUE)
{
u_readLen = file_load.Read(carr_fileData, 512);
CString str_temp, str_data;
for (UINT i = 0; i < u_readLen; i++)
{
str_temp.Format(_T("%02X"), (BYTE)carr_fileData[i]);
str_data += str_temp;
}
pdlg->list_strUpFile->AddTail(str_data);
if (u_readLen < 512)
{
break;
}
}
}
file_load.Close();
}
讀檔案是在執行緒里,list_strUpFile是對話框類的成員
CStringList *list_strUpFile;//宣告
list_strUpFile = new CStringList;//初始化
POSITION pos = list_strUpFile->FindIndex(n);//讀其中的資料
str_data = list_strUpFile->GetAt(pos);
取資料的時候,當n大于560左右的時候就會報錯
請問,CStringList 如何可以存盤更多資料?
我的目的是讀多個檔案,檔案大小從1位元組---5M,想要把檔案截成512位元組一包發送出去,請問有什么更好的方法讀這些檔案?
你回圈讀取資料檔案資料,每次讀取512個位元組的資料,然后發送?
對,發完還要用到檔案中的資料所以要保存起來
你說的保存指的是接收方接收到發送方發送過來的512個位元組然后保存起來嗎?
如果是的話,你接收方在接收資料以后打開一個檔案,回圈接收資料然后寫入檔案中,接收完資料以后關閉檔案即可。
uj5u.com熱心網友回復:
檔案內容為啥用CString ,直接 char* pBuf轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/38790.html
標籤:基礎類
