用CB在WIN.INI中保存信息

现在许多软件把程序中需要的数据保存在注册表中,这样当用户装的软件越来越多时,致使注册表越来越庞大,容易使系统出错。当然,微软也建议在注册表中保存数据,但当我们需要保存的数据不多时完全可以把数据保存在WIN.INI中,这样可以很方便地维护,实现方法相对来说比较简单。下面我以Borland C++ Builder为例来说说如何实现。

原理其实很简单,只需调用API的 WriteProfileString和GetProfileInt函数就可以了。这两个函数的原型是:BOOL WriteProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString );

UINT GetProfileInt(LPCTSTR lpAppName,LPCTSTR lpKeyName,INT nDefault);

其中lpAppName指在WIN.INI中段的名字,即用[]括起来的字符串,lpKeyName指在这个段中每一个项目的名字,lpString指这个项目的值,即“=”后的数, nDefault为当GetProfileInt没有找到lpAppName和lpKeyName时返回的值,即缺省值,前者返回为布尔值(true 或 false),后者返回为无符号整形值。当在WriteProfileString函数中 lpKeyName 为空(NULL)时,则清除这个段的全部内容,lpString 为空时,则清除这一项目的内容,即这一行将清除掉。

下面举一例子来说明这两个函数的用法。新建一个应用程序,在Form1上放两个Edit和三个Button,其中Edit的Text为空,三个Button的Caption分别为“添加”、“查看”、“清除”。双击“添加”按钮加入下面代码:

WriteProfileString(“例子程序”,“项目”,Edit1→Text.c_str());

双击“查看”按钮加入如下代码:

unsigned int Temp;

Temp=GetProfileInt(“例子程序”,“项目”,100);

Edit2→Text=IntToStr(Temp);

双击“清除”按钮加入如下代码:

WriteProfileString(“例子程序”,NULL,NULL);

然后按F9键运行程序。

下来可以检验一下程序的正确性。在Edit1中输入数字,如“3265”,按“添加”按钮,这时运行“sysedit”来查看“WIN.INI”文件的最后面,可以看到加入了如下内容:

[例子程序]

项目=3265

其中“[]”和“=”是函数自动加上的。按下“查看”按钮,在Edit2中出现“3265”,当按下“清除”按钮可清除添加的部分。经过查看可知程序已达到预期的目的。

喜爱编程的朋友可以把上述方法应用到自己的程序中去,来达到保存数据信息的作用。当确实要把信息保存到注册表中,可以在C++ Builder中定义一个Tregistry类的对象来进行相关的操作。

时间: 2024-09-24 10:45:58

用CB在WIN.INI中保存信息的相关文章

用C++ Bulider在WIN.INI中保存信息

现在许多软件把程序中需要的数据保存在注册表中,这样当用户装的软件越来越多时,致使注册表越来越庞大,容易使系统出错.当然,微软也建议在注册表中保存数据,但当我们需要保存的数据不多时完全可以把数据保存在WIN.INI中,这样可以很方便地维护,实现方法相对来说比较简单.下面我以Borland C++ Builder为例来说说如何实现. 原理其实很简单,只需调用API的 WriteProfileString和GetProfileInt函数就可以了.这两个函数的原型是:BOOL WriteProfileS

asp mssql向数据库中保存信息

'asp教程 mssql向数据库教程中保存信息 Set conn = Server.CreateObject("ADODB.Connection") strconn="Provider=SQLOLEDB.1;Persist Sercurity Info=True;User ID=sa;PWD=sa;Initial Catalog=database;Data Source=(127.0.0.1)" conn.open strconn sql ="insert

C#实现在注册表中保存信息

最近做的项目需要在注册表中记录一些用户设置,方便在程序下次启动时读取设置,应用上次用户保存的设置,挺简单的. 写出来,方便记忆,以后要用,可以直接改改就能用. using System; namespace Backend { public class RegistryStorage { public static PageVisibility OpenAfterStart() { Microsoft.Win32.RegistryKey registryKey; PageVisibility v

关于进销存中特定信息保存在哪里的问题 可惜没分了

问题描述 想将数据库连接字符串的相关信息主要是数据库服务器,sa及sa的密码.加密后保存在一个xml或ini中.不太想保存在注册表,因为希望程序绿色.对登陆窗口中,上次成功登陆的用户的用户名也想保存起来,下次登陆时默认此用户名.现在的问题是,我又希望保存的路径是随着程序安装的路径的不同而不同,现在用的是Application.StartupPath获取程序的启动路径.但是调试时必须得运行对应的exe才行,f5没有结果.所以,不知道将来程序打包后,安装在客户机器上是什么样子.还有一个问题,我装了一

ssh中session怎么保存信息和登录状态

问题描述 ssh中session怎么保存信息和登录状态 刚接触,学着做了注册登录,对于后续的实现不明白 1.网站是怎么用session保存用户登录状态的?是不是通过在登录功能中设置一个session保存一个bool变量来保存存储状态?我本来思路如下 public String login() { List<User>users; users=service.queryUser(this.username, this.password); try { User a=users.get(0); r

myeclipse中保存文件时,经常提示以下信息

问题描述 myeclipse中保存文件时,经常提示一下信息:thereareunsavedchangesthatconflictwithchangthereareunsavedchangesthatconflictwiththechangesoutsidetheeditor.Doyouwishtodiscardtheeditorschanges?请教高手如何解决.谢谢 解决方案 解决方案二:你是不是在通过其他的工具打开了你所编辑的文件,两边同时编辑导致的??

php.ini中的php-5.2.0配置指令详解_php技巧

;; 关于php.ini ;;  这个文件必须命名为'php.ini'并放置在httpd.conf中的PHPIniDir指令指定的目录中. ; 最新版本的php.ini可以在下面两个位置查看: ; http://cvs.php.net/viewvc.cgi/php-src/php.ini-recommended?view=co ; http://cvs.php.net/viewvc.cgi/php-src/php.ini-dist?view=co ;;;;;;;;;;;; ;; 语法 ;; ;;

Win 2000中也用Msconfig

当我们要丢掉电脑中多余的启动程序时,自然会想到用Msconfig.exe这个系统配置实用程序.可惜在Windows2000中并没有提供这项功能.我们今天就讲讲怎样把Windows 98和Windows XP中的这个实用程序移植到Windows 2000中来,实现"资源共享".一.移植Windows 98中的Msconfig 将Windows 98中System文件夹内的Msconfig.exe文件复制到Windows 2000(安装后的文件夹为Winnt)中System文件夹内:双击运

PHP中在数据库中保存Checkbox数据(2)

数据|数据库 这代码是非常简单的,你很快地就看完了吧.主要的工作有两个函数完成:"get_checkbox_labels" 和 "make_checkbox_html".其中 "get_checkbox_labels" 查询表const_skills 并且返回一个对象数组,每一个对象有一个id值和相应的技能名称.我们传送这个数组和其它一些参数给"make_checkbox_html" ,这个函数将返回一个字串,用来生成chec