CnPack Forum » CnVCL 组件包 » TCnXorIniFile如何使用?


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

TCnXorIniFile如何使用?

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

2009-4-1 18:32 laiguorong
保存很正常,读取的时候文件大小会变成0字节...

2009-4-3 07:18 Passion
我们检查一下。

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

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

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

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

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

[[i] 本帖最后由 calmpurp 于 2010-5-16 21:35 编辑 [/i]]

2010-5-17 12:56 zjy
确实是个Bug

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

2010-5-17 18:14 calmpurp
:) 谢谢!初学编程,cnpack对我很有帮助,再次感谢!

2010-5-18 10:07 zjy
[quote]原帖由 [i]calmpurp[/i] 于 2010-5-17 18:14 发表
:) 谢谢!初学编程,cnpack对我很有帮助,再次感谢! [/quote]
不客气!能给更多的人以帮助,正是我们所追求的:)

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

页: [1]
查看完整版本: TCnXorIniFile如何使用?


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.