如何删除文件中的部分内容?急!!在线等!!!

talkingmute 2005-09-28 03:26:29
本人在文件中写入了一些结构体,通过CFile的write来写入,后来因为程序的需要,想删除其中的一些结构体,请问该如何操作呢?
请大家帮助!!
...全文
548 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
talkingmute 2005-10-09
  • 打赏
  • 举报
回复
用cstring的方法还是不行,想知道有人了解通过内存映射删除文件中的内容吗?
可否帖些能调试通过的代码?
djfu 2005-09-30
  • 打赏
  • 举报
回复
recv=(char *)hMapview;
CString srecv, sInfo;

srecv.Format("%s", recv);
sInfo.Format("Length = %d, context=", srecv.GetLength());
AfxMessageBox(sInfo + srecv);

srecv.Delete(index*sizeof(RuleType)+1, sizeof(RuleType));
sInfo.Format("Length = %d, context=", srecv.GetLength());
AfxMessageBox(sInfo + srecv);
talkingmute 2005-09-30
  • 打赏
  • 举报
回复
哦,谢谢你!
可是我这改后,它一点也没变~~
在srecv.Delete(index*sizeof(RuleType)+1, sizeof(RuleType));前后各加了个MessageBox,出现的字符串还是一模一样...郁闷啊!
高手们,请帮助下!!
djfu 2005-09-30
  • 打赏
  • 举报
回复
SetLength 这个是无济于事的,因为这只不过是截断文件的长度。
不是按照你的要求更改结构的。

如果要说问题:
srecv.Delete(index,sizeof(RuleType));
//index是我所要删除的第index个结构体,RuleType是结构体名

这里明显不对,你似乎要改成:
srecv.Delete(index*sizeof(RuleType)+1, sizeof(RuleType));

talkingmute 2005-09-30
  • 打赏
  • 举报
回复
帮帮忙啊!
再次请问如何实现我所想要的功能呢?删除文件中的部分内容??
djfu 2005-09-30
  • 打赏
  • 举报
回复
CString s1 = " This is ABCDEFGH a test";
s1.Delete(9, 8);
cout << "*" << s1.operator LPCTSTR() << "*" << endl;

我这测试是没问题的,建议你不要往CString srecv里放太长的字符串。你贴一下你的
MessageBox的弹出内容。
qinxiaofei 2005-09-30
  • 打赏
  • 举报
回复
友情支持一下
pizicai105 2005-09-30
  • 打赏
  • 举报
回复
要删除哪部分,就想办法得到它的头跟尾,再删除就行了

得不到的话,建议全读,再删,再写
talkingmute 2005-09-30
  • 打赏
  • 举报
回复
to:djfu(一马平川)
谢谢,不过我加了之后,两次弹出的还是一样~~
很是郁闷!!
echoxue 2005-09-30
  • 打赏
  • 举报
回复
help to up
talkingmute 2005-09-29
  • 打赏
  • 举报
回复
顶下,希望大家帮助下!!
talkingmute 2005-09-28
  • 打赏
  • 举报
回复
哦,谢谢,那请问如何实现我所想要的功能呢?删除部分内容??
gunney 2005-09-28
  • 打赏
  • 举报
回复
SETLENGTH作用是设置文件长度,扩张或截断文件
talkingmute 2005-09-28
  • 打赏
  • 举报
回复
to:gunney(楚州才子)
SETLENGTH函数的作用是什么?怎么用?
--------------

谢谢各位,难道没有简便的方法吗?
我通过查找,知道有一种内存映射的方法,可是改了之后,还是没有删除掉,现把代码贴出来,请大家帮助看看!
HANDLE hFile = CreateFile("C:\\1.dat",GENERIC_WRITE|GENERIC_READ,0,NULL
,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile == INVALID_HANDLE_VALUE)
MessageBox("File could not be opened.");
else
{
hMapfile=CreateFileMapping((HANDLE)hFile,NULL,PAGE_READWRITE,0,0,"MapTest");
if(hMapfile==NULL)
MessageBox("mapping file failed!");
else
{
CloseHandle((HANDLE)hFile);
hFile=0;
hMapview=MapViewOfFile(hMapfile,FILE_MAP_WRITE,0,0,0);
if(hMapview==NULL)
MessageBox("mapping view failed!");
else
{
recv=(char *)hMapview;
CString srecv=recv;
srecv.Delete(index,sizeof(RuleType));//index是我所要删除的第index个结构体,RuleType是结构体名
recv=srecv.GetBuffer(srecv.GetLength()+1);
srecv.ReleaseBuffer();
UnmapViewOfFile(hMapview);

}
}
}

请大家看看哪里有错误!万分谢谢!!
nkwesley 2005-09-28
  • 打赏
  • 举报
回复
1.读出来
2.删除
3.写回去
gunney 2005-09-28
  • 打赏
  • 举报
回复
SETLENGTH后重写
koko1998 2005-09-28
  • 打赏
  • 举报
回复
把处理后的数据从新写入文件
goodboyws 2005-09-28
  • 打赏
  • 举报
回复
读出来重新写一遍,没有别的好办法
gunney 2005-09-28
  • 打赏
  • 举报
回复
virtual void SetLength(
ULONGLONG dwNewLen
);
Parameters
dwNewLen
Desired length of the file in bytes. This value can be larger or smaller than the current length of the file. The file will be extended or truncated as appropriate.
酷窗版演示:http://www.edd8.com/bbs/index.asp?style=0 简装版演示:http://www.edd8.com/bbs/index2.asp 一点点论坛(http://www.edd8.com/bbs)使用说明 欢迎大家下载使用一点点论坛,在使用论坛前,请认真阅读以下内容: ===================================== 论坛:一点点论坛(http://www.edd8.com/bbs) 主页:一点点星空驿站(http://www.edd8.com/) 站长:叮咚虫(e_Mail:b_li@163.com) 版本:EDD8 Ver.2003 for DV =====================================   一点点论坛是建立在动网论坛基础上的ASP互动论坛,从动网Var5.b109开始论坛结构便开始脱离动网,与动网升级一起,本论坛本身也同时实现了动网新的功能,到519的发布,本人常得论坛本身已功能基本完善,所以决定与动网完全脱离,到动网Final的出现,本论坛也决定不再跟随动网升级了,本人全面对原来的论坛进行了代码优化和版面重排,并升级了部分功能代码,完成了现在这样的论坛。使论坛已经完全脱离了动网,以后也不可以随动网一起升级了!   所以选择本论坛的朋友请先明白,如果采用了本论坛的数据结构,以后就不可以和动网一起升级了,而现有的动网Final版的数据库和本论坛的数据库也是不兼容的!对于动网V5.b519的用户,本人同时在压缩包里提供了升级文件,可以把你519的数据库升级成和本论坛一致的数据结构!   由于一些朋友催得较部分功能还是没有完善的(但不会出错),我以后也会给出升级包的。所以决定使用本论坛的朋友,请一定要到本站论坛的“站务办公室”进行指定的留言签名,以好我第一时间通知大家升级!   论坛使用到的部分插件并没有一同奉上,原因是我还没完成代码优化,请过几天到我的论坛上下载。可以下载的插件主要有:社区银行、网络拳皇、可乐吧台球、五子棋等等…… ===================================== 主要特色功能说明: ◎ 双版面设计,用户可以根据不同爱好选择不同的版式(酷窗版和精简版),系统会记录用户的选择,不用重复选择,也不会出现版面混淆等现象; ◎ 发贴回贴互动功能,给用户随机的互动事件,增加用户的参与兴趣; ◎ 增强的UBB代码和JS代码,新增的买卖贴、定时贴等十几种特色功能UBB代码; ◎ 贴子功能加强,增加互动鲜花、鸡蛋、金钱、炸弹等功能,并保存数据作为用户在论坛的人缘依据; ◎ 不好说了,等你去发掘吧,不然又说我叫卖了…… ====================================== 安装说明: 解压就可以了,数据库名称和路径有变动时不要忘了在CONN。ASP进行相应修改。 (注意:当论坛一个贴子也没有时,论坛明星会出错,但当你加入贴子后就正常了,大家不要惊慌) 升级:(对519),解压后把你的原519数据库覆盖现数据库,再执行根目录下的UPDATE。ASP文件就行了,如果没有升级成功的提示,说明你的数据不能进行升级! (注意:数据库的升级应做了备份,并在本机上进行!) ====================================== 最后一点说明: 由于论坛本来是打算自己用的,所以在设计的过程部分变量已经去掉,不能从后台设置了(如表格边框),请大家最好保持现有的风格。 如果还不问题,可以到我的论坛上来交流。??注意,由于本人时间不限,技术支持是有限的,请不要过于强求!

16,472

社区成员

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

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

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