Board logo

Subject: TCnXorIniFile如何使用? [Print This Page]

Author: laiguorong    Time: 2009-4-1 11:51     Subject: TCnXorIniFile如何使用?

TCnXorIniFile如何使用?
Author: Passion    Time: 2009-4-1 13:37

就像普通IniFile类一样使用,不同之处只是Create时需要传入一字符串参数作为异或加密的种子。保存的ini文件内容会用此字符串简单异或加密。
Author: laiguorong    Time: 2009-4-1 18:32

保存很正常,读取的时候文件大小会变成0字节...
Author: Passion    Time: 2009-4-3 07:18

我们检查一下。
Author: Passion    Time: 2009-4-4 17:59

经过检查,是我们在处理异或时有bug,导致有时无法正确解码从而覆盖文件内容。
最新的CVS上已经修复了此问题,并增加了一个XorIni的例子,可参考。
最新发布的20090404CVS包也已经集成了此修改。
Author: calmpurp    Time: 2010-5-16 16:27

我使用最新的cnvcl_20100501,发现又有这个问题,不正确的加密的种子,会导致文件清空。
Author: zjy    Time: 2010-5-16 19:01



QUOTE:
原帖由 calmpurp 于 2010-5-16 16:27 发表
我使用最新的cnvcl_20100501,发现又有这个问题,不正确的加密的种子,会导致文件清空。

不正确的加密种子会导致解密出来的文本不再满足INI文件的格式,赋值给INI对象后,再从INI对象生成字符串加密保存,就会出现文件被清空的现象了。
Author: calmpurp    Time: 2010-5-16 21:33

我的代码
try
    T:= TCnXorIniFile.Create(Extractfilepath(Paramstr(0))+'project.ini','xin');
    edt1.Text := T.ReadString('main','user','');
  finally
    T.Free;
  end;
只要解密字符不对就清空,只是读一下,就清空了?

[ 本帖最后由 calmpurp 于 2010-5-16 21:35 编辑 ]
Author: zjy    Time: 2010-5-17 12:56     Subject: 确实是个Bug

因为 TCnStreamIniFile.Destroy 里强制调用了一次 UpdateFile,所以会导致“只要解密字符不对就清空,只是读一下,就清空了”的问题。
SVN中的代码已经修正,增加了内容变更判断。
http://code.google.com/p/cnpack/source/detail?r=594
Author: calmpurp    Time: 2010-5-17 18:14

谢谢!初学编程,cnpack对我很有帮助,再次感谢!
Author: zjy    Time: 2010-5-18 10:07



QUOTE:
原帖由 calmpurp 于 2010-5-17 18:14 发表
谢谢!初学编程,cnpack对我很有帮助,再次感谢!

不客气!能给更多的人以帮助,正是我们所追求的:)
Author: dtpl    Time: 2011-1-5 15:04

管理员,你好,我在使用TCnXorIniFile在我的程序中时,也偶尔会出现ini文件中的内容被清空的问题,请问怎么解决,我用的是  CnVCL 组件包 20101001。谢谢了。




Welcome to CnPack Forum (http://bbs.cnpack.org/) Powered by Discuz! 5.0.0