| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1122 人关注过本帖
标题:请问:软件的“设置”功能,要保存设置参数项,用哪种方案是最好的?
只看楼主 加入收藏
sexxp
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2005-1-8
结帖率:93.75%
收藏
已结贴  问题点数:20 回复次数:9 
请问:软件的“设置”功能,要保存设置参数项,用哪种方案是最好的?
如题,用户在“设置”中修改了程序运行的参数之后,这些新的设置项怎么保存生效的方案是最经典好用的呢?

xml?
ini?
txt?
数据库?

还是什么方法最靠谱?
特此请教各位大虾。
搜索更多相关主题的帖子: 蒋浠 
2009-07-14 18:32
ceco3000
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:61
专家分:147
注 册:2009-7-14
收藏
得分:7 
我知道的最简单的方式就是定义个一个可序列化的配置类.把配置保存在这个类的对象里.用二进制序列化存到文件里.
这样在储存和读取配置的时候都不用特殊的编程.一般3行代码就可以读取和储存配置.即使你修改了配置的结构也不用
修改读取和储存的代码.
2009-07-14 18:39
sexxp
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2005-1-8
收藏
得分:0 
楼上的方法好像好复杂的样子....二进制....能不能来点小例子看一下是咋回事?

2009-07-14 18:44
NTYLWJ
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:191
专家分:698
注 册:2008-12-2
收藏
得分:7 
以下是引用ceco3000在2009-7-14 19:07的发言:

一点也不复杂我给你代码一看就明白了. 序列化过的对象可以在网络上发给其他的程序也可以作为文件保存起来.
在定义类的时候加上  [Serializable]
这样写
    [Serializable] //这个标志这个类是可以序列化的
     ...

你的方法还有有点不懂。读取到BIN后怎么办?
我都是用XML文件保存的。
读写XML文件C#3.0源代码.rar (39.16 KB)


[[it] 本帖最后由 NTYLWJ 于 2009-7-14 19:23 编辑 [/it]]
收到的鲜花
  • 野比2009-07-14 21:41 送鲜花  10朵   附言:好人
2009-07-14 19:22
ceco3000
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:61
专家分:147
注 册:2009-7-14
收藏
得分:0 
读取到BIN后怎么办?
loginList = (LoginList)bf.Deserialize(filestream);
这个代码就是读取 bin文件的.
读取到的bin文件就是LoginList 类的一个对象.
在我的代码里LoginList是这样定义的.
    [Serializable] //这个标志这个类是可以序列化的
    class LoginList
    {
        public List<string> loginList = new List<string>();
    }

正常的使用LoginList类里的loginList是
LoginList li;
li = new LoginList();
这样
li.loginList
就可以使用 LoginList 里的 字段了.

读取 bin 后得到的东西就是一个对象
对应上面的正常的写法就是
LoginList li;
li = (LoginList)bf.Deserialize(filestream);
li.loginList
就可以使用LoginList类里的loginList字段了.而且这个字段里还是有内容的.
这个内容就是你上次序列化以前存在这个对象的里的内容.
2009-07-14 19:49
ceco3000
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:61
专家分:147
注 册:2009-7-14
收藏
得分:0 
迷糊了我的vs是2005的打不开你的文件...
2009-07-14 20:26
sexxp
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2005-1-8
收藏
得分:0 
我怎么看了这个代码后,觉得读写xml好像还更简单一点似的?

2009-07-14 22:17
ceco3000
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:61
专家分:147
注 册:2009-7-14
收藏
得分:0 
实际关键的代码就3行
读取的.
                    FileStream filestream = new FileStream("LoginIdList.bin", FileMode.Open);
                    BinaryFormatter bf = new BinaryFormatter();
                    loginList = (LoginList)bf.Deserialize(filestream);
写入的.
                        FileStream fileStream = new FileStream("LoginIdList.bin", FileMode.Create);
                        BinaryFormatter bf = new BinaryFormatter();
                        bf.Serialize(fileStream, loginList);
2009-07-14 22:41
ceco3000
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:61
专家分:147
注 册:2009-7-14
收藏
得分:0 
因为你只有1行数据所以看起来简单
但是如果有50行数据是不是要写50行读取的
textBox1.Text = ds.Tables[0].Rows[0][0].ToString();
如果修改了配置的项目是不是要修改其他的代码的同时还要修改读取和写入的方法?
使用序列化就不会了.这3行可以对应一切.可以是一个数组一个字符串或者一个聊天消息还有可能是一个事件的处理方法.

不只是可以处理文件还可以把你写的类发送到其他人的电脑上运行...
其他的用法我还不知道...
2009-07-14 22:48
快速回复:请问:软件的“设置”功能,要保存设置参数项,用哪种方案是最好的?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.053289 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved