如何存储大量数据到变量中CStringList

女神打Boss 2019-07-22 07:15:40
	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字节一包发送出去,请问有什么更好的方法读这些文件?



...全文
399 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hurryboylqs 2019-08-11
  • 打赏
  • 举报
回复
文件内容为啥用CString ,直接 char* pBuf
女神打Boss 2019-07-29
  • 打赏
  • 举报
回复
stack overflow 是栈内存用完了,一般情况下就是检查递归的情况

感谢 zgl7903
女神打Boss 2019-07-29
  • 打赏
  • 举报
回复
引用 4 楼 Eleven 的回复:
[quote=引用 楼主 女神打Boss 的回复:]
	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个字节的数据,然后发送?[/quote]
对,发完还要用到文件中的数据所以要保存起来
Eleven 2019-07-29
  • 打赏
  • 举报
回复
引用 楼主 女神打Boss 的回复:
	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个字节的数据,然后发送?
Eleven 2019-07-29
  • 打赏
  • 举报
回复
引用 5 楼 女神打Boss 的回复:
[quote=引用 4 楼 Eleven 的回复:]
[quote=引用 楼主 女神打Boss 的回复:]
	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个字节的数据,然后发送?[/quote]
对,发完还要用到文件中的数据所以要保存起来[/quote]
你说的保存指的是接收方接收到发送方发送过来的512个字节然后保存起来吗?
如果是的话,你接收方在接收数据以后打开一个文件,循环接收数据然后写入文件中,接收完数据以后关闭文件即可。
schlafenhamster 2019-07-23
  • 打赏
  • 举报
回复
使用 CStringArray
zgl7903 2019-07-22
  • 打赏
  • 举报
回复
Stack over, 停下来看看调用堆栈,是否存在递归形式的调用?
smwhotjay 2019-07-22
  • 打赏
  • 举报
回复
用char* new的内存。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧