记事本里字符串包括很多$00 结束符 如何去掉

chinawcs 2018-01-15 09:30:47
记事本文件是 其它软件导出的, 用ue查看里面包含很多$00 (16进制) 结束符

打开记事本 复制粘贴 截断字符了


TStrings LoadFromFile 一样也被截断
...全文
1601 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tp26021340 2018-04-03
  • 打赏
  • 举报
回复
引用 2 楼 chinawcs 的回复:
记事本 里面内容很多 几十M 要如何优化处理呢 ? 一次装载 替换字符 速度可行 ?
chinawcs 请教一下,https://bbs.csdn.net/topics/390554303#new_post,这个问题你是怎么解决的,我现在用Chromium 内存还是在不断的增加,就是二个页面不停的切换。测试内存有没有泄露。看到你解决,得来请教。 经测试 现在完全没有问题了 内存不再增大 软件稳定运行 。 确实是 mshtml 的问题 感谢 武稀松 技术指导 这里不得不说 王哥的代码 一级棒。
doloopcn 2018-01-17
  • 打赏
  • 举报
回复
记事本中出现$00字符,一般都是导出的时候的编码与记事本的默认编码不一致,可以试试用XE版的MEMO控件,直接打开文件然后,再指定相应的编码另存
SupermanTm 2018-01-16
  • 打赏
  • 举报
回复
不能随便删的哦,你看编码是 ANSI 的还是 UNICODE 还是 UTF8 的,不同的编码对 $00 的理解是不一样的 BTW, 如果编个程序解决,用文件流就很方便可以处理掉了
  • 打赏
  • 举报
回复
几十MB,对20年以来的电脑都属于小数据,一次处理完就可以了。 var f: file; fsize, n: integer; buf: array of byte; begin AssignFile(f, 'xxx.txt'); Reset(f, 1); fsize := FileSize(f); SetLength(buf, fsize); BlockRead(f, Buf[0], fsize, n); for n := 0 to fsize - 1 do if buf[n] = 0 then buf[n] := 32; Rewrite(f, 1); BlockWrite(f, buf[0], fsize, n); CloseFile(f); end; 注意没有做异常处理,你看情况加上就好了。
  • 打赏
  • 举报
回复
用二进制方式打开,把$00删除或者替换为空格($20)即可。
chinawcs 2018-01-15
  • 打赏
  • 举报
回复
记事本 里面内容很多 几十M 要如何优化处理呢 ? 一次装载 替换字符 速度可行 ?

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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