如何保存当前程序的信息.(50分)

  • 主题发起人 主题发起人 Babyfloppy
  • 开始时间 开始时间
B

Babyfloppy

Unregistered / Unconfirmed
GUEST, unregistred user!
通常,每次启动程序,他都会按原先设定的模式显出窗口,
那么如何能让程序记住退出时的状态,而当再开启时,他呈现出
退出时的状态呢?
是要写一个*.ini吗?
望指教.
 
写ini最方便,也可写注册表
 
不一定写ini, 只要按自己定义的格式保存相关信息即可. 随便保存到哪里,
最隐蔽的方法是保存到注册表. 好点的保存到数据库(随便这个用户在
哪台机器上运行都能呈现他上次退出时的状态).
 
同意eyes.
如果你做的是一个数据库程序,可以自己建一个所谓"系统表",专门保存程序参数.
如果没有数据库,就保存到注册表里去吧.不推荐ini文件.
 
就是, 存在什么地方都可以, 如ini,dat文件中...
如果存在服务器上(不一定数据库中, 服务器的共享目录中就可以), 可以实现你要
的结果.
如果配合自毁文件的编写方法(看以前的帖子), 还可以存在当前exe文件上.
 
还是写ini文件吧,注册表那个
<font color="red">垃圾桶</font>
难道被塞的还不够满么?

用Delphi中的Tinifile类,生成
ini文件,自己给它赋各种参数
和值,起码不象注册表中常有
没用的键。
 
推荐使用ini文件。注册表不方便,而且删除程序
后很可能有遗留,不符合绿色软件要求,嘿嘿。
同时,如果想在一台机子上设定几种不同功能的
界面,注册表就很麻烦了。最好就是放在运行目
录下的ini文件。
 
youtoo: 正相反,windows希望程序员往注册表里写东西.ini文件是以前win31里面
的东西.正是因为windows讨厌别人写ini文件,所以从win95后改成了注册
表.况且,看看delphi的帮助也可以知道,ini的函数只是为了和以前兼容
才保留下来的.
至于说到注册表内容太多的问题,那不是你我应该关心的,windows会处理
好的,而且注册表处理速度也比ini文件快.
 
我认同youtoo的意见,虽然注册表的速度快,但INI使用方便,容易管理,不会产生垃圾。
具体的做法可以参考RXLIB中的做法。
 
ini文件不是垃圾????
 
Ini一般存放在程序的当前目录下,删除,或反安装该程序时,用户很容易对INI进行清理。如果存放在Windows/System中,则也会成为垃圾。
而据我的观察,大部分程序保存在注册中的数据在反安装时都没有清除。
长期安装,删除程序将会在注册中保留很多的多余数据,这也是Regclean等软件存在的原因。
 
天!你作为程序员是干什么的,不彻底删除不是你自己的责任吗?
 
比如说Delphi的DSK文件,Borland不把它写在注册表中,是因为INI具有一定的灵活
性,在注册表中实现就有一定的困难。

INI与注册表读写各有各的好处。就要看具体的工作需求了。
 
看看注册表吧! delphi写到注册表里的东西可比ini文件多多了!!!

>>在注册表中实现就有一定的困难。
有什么困难可以提出来,大家可以帮你解决.

BTW: 用ini文件如何实现树型的键系列????如何保存二进制数据??
 
呵呵,不要这么极端么。INI文件和注册表之争,其实就
是要不要把配置信息写到注册表中,跟INI能干什么已经
没什么大关系了。INI不能保存二进制数据,那就写个能
保存二进制的DAT文件,但是它跟INI有什么区别呢?反正
都是不写到WINDOWS的文件中。如果说INI有其不足之处,
那么如果我想在一台机子上运行10个不同的设置,注册表
怎么写?20个呢?100个呢?至于WINDOWS希望程序员往注
册表里写,我不知道是什么道理。如果各个程序自己管理
好自己的INI,有什么不好的?
 
DreamTiger: 越复杂的结构越适合注册表,因为他是树型的结构.

>>INI不能保存二进制数据,那就写个能保存二进制的DAT文件,
这样值得吗? 这里讨论的是如何用简单的方法,就为了不用windows专门提供
的注册表,而专门自己写一个???而且功能肯定还赶不上注册表.
是不是有点走极端了?

>>注册表怎么写?20个呢?100个呢?
你觉得管理100个注册表键方便还是管理100个文件方便???

>>至于WINDOWS希望程序员往注册表里写,我不知道是什么道理
我也不知道,我只知道windows把大部分以前放在system.ini,win.ini
里面的东西现在放到注册表里了.
 
cAKK:
>>越复杂的结构越适合注册表,因为他是树型的结构.
这个不错,不过,考虑到这个问题提出的原因,你就可以看到,
其实我们并不需要那么复杂的结构。比如说程序退出的位置、
上面的开关按钮设置情况等等。

>>INI不能保存二进制数据,那就写个能保存二进制的DAT文件,
>>这样值得吗? 这里讨论的是如何用简单的方法,就为了不用windows专门提供
>>的注册表,而专门自己写一个???而且功能肯定还赶不上注册表.
>>是不是有点走极端了?
我只不过是举个例子,其实真正复杂的东西,是没法写到注册表中的。
我想没有人会在注册表中保存数据库的,呵呵。我是从来没有在注册
表中保存过数据,所以我也没有用它来保存过二进制的东西。在注册
表中,那些项是用二进制保存的?(我是真的不知道,可不是抬杠哦)

>>注册表怎么写?20个呢?100个呢?
>> 你觉得管理100个注册表键方便还是管理100个文件方便???
呵呵,我想你误会我的意思了。我的意思是,一个程序只管理运行目
录下的INI,如果想要20个不同的运行环境,那就可以建立20个快捷
方式,或者跟Foxmail一样,根据Param设定的目录,建立相应的INI文
件,就可以有不同的配置了。而不是在一个程序中管理20个(或者100
个)INI文件。

>>至于WINDOWS希望程序员往注册表里写,我不知道是什么道理
我也不知道,我只知道windows把大部分以前放在system.ini,win.ini
里面的东西现在放到注册表里了.
呵呵,windows自己怎么干,就不好说了。如果别的软件都这么干,
到真的要好好想想了。
 
>>其实我们并不需要那么复杂的结构。
问题是操作注册表并不比ini文件复杂,你不用注册表也不是因为它太复杂吧!
事实上,二者函数基本一样.

>>我想没有人会在注册表中保存数据库的,
那到不至于,不过你知道注册表本身就是一个数据库吗?

>>或者跟Foxmail一样,根据Param设定的目录,建立相应的INI文件,就可以有不同的配置了。
看来你的确没怎么用过注册表.

>>如果别的软件都这么干,到真的要好好想想了。
大凡正规点的软件,都会把信息保存到注册表里面,不信你可以到注册表里面找一找,
建议你到下面几个地方看看,你会发现很多熟悉的名字:

HKEY_LOCAL_MACHINE/Software
HKEY_LOCAL_MACHINE/Software/Borland
HKEY_CURRENT_USER/Software
HKEY_CURRENT_USER/Software/Borland
 
WINDOWS肯定不希望用INI文件而主张用注册表,我一直担心以后会不支持INI文件,
万一在64位的WINDOWS废弃INI文件,我们开发的程序就玩完了
 

Similar threads

后退
顶部