保存程序狀態方法

Delphi应用程序中保存状态信息的两种方法
成都市电子科技大学96
---- 许多For Windows的应用程序在一次运行结束时会自动保存此次运行的状态信息,

样做的好处是用户只要修改一次程序的运行状态,在下次启动此程序时,该程序会以上

运行的状态出现,用户可以按照自己的习惯来调整应用程序。
---- 在Delphi中有两种方法可以实现这种功能:使用INI文件或使用注册表。下面将详

阐述这两种方法。
---- 一、 使用INI文件保存状态信息
---- Delphi中提供了TIniFile类,TIniFile类能够在INI文件中存取应用程序专用信息
,我
们可以用它来处理INI文件。注意使用时将IniFiles单元加入uses列表中。
---- 使用INI文件存取应用程序专用信息是Windows 3.x中的标准方法。INI文件中的信

储存是分段的,每个段由一个括在方括号中的名称说明,比如WIN.INI中就包括[Deskt
op]
等段。每个段中又由一些键值组成,这些键值的格式是:< keyname >=< value >,共有

种类型:字符串、整型和布尔型,每种类型有两种方法可以读写:ReadBool,WriteBoo
l,
ReadInteger,WriteInteger,ReadString,WriteString。下面就一个例子来说明它们
的用法:
---- 1.建立INI文件
  procedure  TForm1.FormCreate(Sender:Tobject);
   {如INI文件不存在,建立INI文件;
   否则,从INI文件中读取数据}
   var
  status:integer;
     inifile:TIniFile;
     filename:String;
   begin
     filename:=extractfilepath
     (application.exename)+'iniexample.ini';
     inifiel:=Tinifile.create(filename);
     status:=inifile.readinteger
     ('MainForm','Status',0);
     if status< >0 then
     //INI文件存在,读状态信息
       case status of
       1: begin
         top:=inifiel.readinteger
         ('MainForm','Top',top);
          …………
         end;
       2: begin
         top:=100;
         left:=100;
         end;
      3: windowstate:=wsmaximized;
       end;
   end;
2.保存状态
   procedure  TForm1.FormDestroy
   (Sender:Tobject);
   var
     status:integer;
   begin
     case windowstate of
       wsnormal: begin
              inifile.writeinteger
              ('MainForm', 'Top',top);
              …………
              //保存状态信息
          end;
       wsminimized: status:=2;
       wsmaximized: status:=3;
     end;
     inifile.writeinteger('MainForm',
    'Status',status);
     inifile.destroy;
   end;
上述程序运行之后,生成的iniexample.ini文件格式如下:
  [MainForm]
    Top=60
    Left=100
    ………
    Status=1
---- 二、 使用注册表保存状态信息
---- INI文件只是为了兼容以前的应用程序而存在,Windows 95/NT使用系统注册表来代

INI文件,所有For Windows 95/NT的应用软件都应该使用注册表来保存状态,这也是
MicroSoft推荐的作法。Delphi提供了两个类来处理注册表。Tregistry类封装了系统注
册表。
而TRegIniFile类不但封装了注册表,还提供了一条简单的途径使现有的Windows 3.1应

软件升级到Windows 95/NT。TRegIniFile类提供了TIniFile类的接口,但没有使用文件

而是将数据保存在注册表中。文件名作为一个主键,默认建立在HKEY_CURRENT_USER
下。相应的,INI文件中的段名作为一个键建立,段中的各项数据就变为这个键下边的各

项数值。仍以上面的例子为例,如果使用TRegIniFile类,只需改动三处:
---- 1.在uses列表中用registry单元代替IniFiles单元
---- 2.用TRegIniFile类代替TIniFile类
---- 3.将inifiel:=Tinifile.create(filename);改为Inifile:=TRegIniFile.Creat
e(Filename);

posted on 2006-09-11 10:03 青蛙學堂 阅读(444) 评论(0)  编辑 收藏 引用 所属分类: 軟件布袋

只有注册用户登录后才能发表评论。
<2006年7月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

导航

统计

常用链接

留言簿(8)

随笔分类

随笔档案

收藏夹

青蛙学堂

最新评论

阅读排行榜

评论排行榜