~~~~~~~~~请教高手一个文件操作问题,急,在线ING!!!!!

zminhao 2004-09-04 11:11:39
我想在DOC类里读一个.BIN文件,然后在VIEW里用16进制显示出来
CFile file;
CFileException e;

// 打开文件
if (!file.Open(strFileName, CFile::modeRead|CFile::typeBinary, &e))
{
TCHAR szError[1024];
e.GetErrorMessage(szError, 1024);
AfxMessageBox(szError);
return false;
}

DWORD dwLen = file.GetLength();
DWORD dwPos = file.GetPosition();
BYTE *p=new BYTE[dwLen];
memset(p,0,dwLen);
UINT LEN=file.Read((void*)p,dwLen);
file.Close();
可是读出来的P里的内容只有一点点,但返回读文件LEN确是正确的文件长度,请大侠帮我看看,最好有这方面的例子
...全文
157 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zminhao 2004-09-06
  • 打赏
  • 举报
回复
感谢大家的帮助
zminhao 2004-09-05
  • 打赏
  • 举报
回复
zmhgod@po-star.com
zminhao 2004-09-04
  • 打赏
  • 举报
回复
拜托给个例子吧
zminhao 2004-09-04
  • 打赏
  • 举报
回复
有没有这方面的例子哪位大侠给一份
memory_xj 2004-09-04
  • 打赏
  • 举报
回复
其实读文件没有问题,是VC编译系统在显示你这个文件缓冲(BYTE数组)时就象显示字符串一样,你读的是一个流式文件,当然有数字0.显示将在NULL也就是在0处截断。但这不防碍你读这个文件缓冲区。
只需用循环就行:
for (long i=0; i < LEN; i++)
{
....
BYTE temp = p[i];
......
}
TieShou 2004-09-04
  • 打赏
  • 举报
回复
你GetPosition()干吗?
直接file.SeekToBegin();就可以啊
huwei001982 2004-09-04
  • 打赏
  • 举报
回复
我有, 楼主留下 MAIL
zminhao 2004-09-04
  • 打赏
  • 举报
回复
谁有在VIEW里显示成如下格式的例子请给一个,分数可以再加

地址 HEX数据 ASCII

00000000 30 31 32 33 34 35 36 37 01234567
00000008 38 39 3A 3B 3C 3D 3E 3F 89:;<=>
.....
zminhao 2004-09-04
  • 打赏
  • 举报
回复
哪位知道啊,找不到啊
zminhao 2004-09-04
  • 打赏
  • 举报
回复
哪位知道啊,找不到啊
CaptainIII 2004-09-04
  • 打赏
  • 举报
回复
msdn里就有,不过是用sdk api编写的,名字是pe,还是hexview就记不清楚了。
zminhao 2004-09-04
  • 打赏
  • 举报
回复
谁有啊
zminhao 2004-09-04
  • 打赏
  • 举报
回复
谁有在VIEW里显示成如下格式的例子请给一个,分数可以再加

地址 HEX数据 ASCII

00000000 30 31 32 33 34 35 36 37 01234567
00000008 38 39 3A 3B 3C 3D 3E 3F 89:;<=>
.....
baoyuhua 2004-09-04
  • 打赏
  • 举报
回复
另外,如果文件实在太大,一次仍无法读完,在这里可以采用以下形式:

DWORD dwLength = file.getlength()
while(dwLength)
{
int iLength = file.readhuge(...);
dwLength -= iLength;
}

这样可以循环读完整个文件
baoyuhua 2004-09-04
  • 打赏
  • 举报
回复
主要问题是文件内容过大,file.read()无法一次读完,在这里应该使用file.readhuge()函数,它允许读的最大字节数是DWORD类型的,而file.read()是UINT类型的
zminhao 2004-09-04
  • 打赏
  • 举报
回复
没有人有例子吗

16,473

社区成员

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

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

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