如何删除流Stream中的0字符(ASCII码为0)? 如果文件中间包含0字符,那么用TStrings处理时到0字符处结束,现在想办法将文件数据加载到Stream中预处理一下,将中间的0字符删除掉,再来进一步处理。各位有什么办法将0字符从Stream中删除? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这种处理的方法很多:vars:char;fs:tfilestream;tem:array of byte;//交换区ps:integer;begin...fs.readbuf(s,sizeof(s));if s='0' then begin fs.seek(-1,fs.postion);//把指针向上,删除 0 字符 ps:=fs.position //记录当前位置 setlength(tem,fs.size-fs.position);//设定buf长度 zeromemory(tem,length(tem)); //buf晴0 fs.readbuf(tem,length(tem)); //剩下的读入buf fs.seek(ps,0); //指针回去 fs.writebuf(tem,length(tem)); //重新写入fs完成清0字符的整体动作......end;///但是非常不建议这么做因为io的读写操作费时费事//可以用tlist建立指针buf,//删除用tlist.delete;//然后写入流或者buf最好不用预处理,在处理的过程中直接处理//不知道对你有没有用 如果ASCII码为20的就简单了,可惜不是20 to baiduan(-_-小猩猩 @_@ 大金刚-_-) 如果是20就不用流这么复杂了,呵呵 的确非常麻烦,幸好文件里面的ASCII码为0的字符不多,被我手动删除掉了。流本来是适合块操作的,这样做效率的确不高。谢谢金刚! 自定义COMbobox加入三列字符串对齐问题 CoolTrayIcon 的一些问题和其他综合性问题。 其实生活需要调剂,工作也要放松。(鬼故事) 关于FastReport中FillSpacing的疑问??急!急!急! 如何使TreeView里面的不同节点呈现不同颜色? 请一个SQL语句的写法: 我编写的一个VCL控件,我想将它做成一个OCX控件。 高分相赠,从哪里买这些东西 ASP.NET的简单问题 高手们!!快来看时尚超酷的问题?有分送哦! 如何判断查找的数据内容是否存在某一数据中 请问如何让弹出窗体像QQ一样慢慢从屏幕右上角向下展开???
var
s:char;
fs:tfilestream;
tem:array of byte;//交换区
ps:integer;
begin
...
fs.readbuf(s,sizeof(s));
if s='0' then
begin
fs.seek(-1,fs.postion);//把指针向上,删除 0 字符
ps:=fs.position //记录当前位置
setlength(tem,fs.size-fs.position);//设定buf长度
zeromemory(tem,length(tem)); //buf晴0
fs.readbuf(tem,length(tem)); //剩下的读入buf
fs.seek(ps,0); //指针回去
fs.writebuf(tem,length(tem)); //重新写入fs完成清0字符的整体动作
...
...
end;
///但是非常不建议这么做因为io的读写操作费时费事
//可以用tlist建立指针buf,
//删除用tlist.delete;
//然后写入流或者buf
最好不用预处理,在处理的过程中直接处理
//不知道对你有没有用
如果是20就不用流这么复杂了,呵呵
流本来是适合块操作的,这样做效率的确不高。
谢谢金刚!