CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

谁说说有关配置文件的读写?

楼主Cleanshusheng(子曾经曰过)2003-01-07 11:01:28 在 Delphi / VCL组件开发及应用 提问

配置文件在DELPHI有专用的文件类型说明和应用么?  
   
  高手指点一下。 问题点数:20、回复次数:2Top

1 楼wkliangsdqd(天元)回复于 2003-01-07 14:46:04 得分 20

给你些提示:自己看看吧:  
  创建INI文件:  
  var   ini   :   tinifile;  
  ini   :=   tinifile.create('filename.ini');  
  ini.writesring('key','dfj','valre);//如果文件不存在则创建,存在就打开文件在里面写  
   
  从.INI文件中获取字符串  
  var  
  strResult:pchar;  
  begin  
  GetPrivateProfileString(  
  'windows',   //   []中标题的名字  
  'NullPort',   //   =号前的名字  
  'NIL',   //   如果没有找到字符串时,返回的默认值  
  strResult,   //存放取得字符  
  100,   //取得字符的允许最大长度  
  'c:\forwin95\win.ini'   //   调用的文件名  
  );  
  edit1.text:=strResult;   //显示取得字符串  
  从.INI文件中获取整数  
  edit1.text:=inttostr(GetPrivateProfileInt(  
  'intl',   //   []中标题的名字  
  'iCountry',   //   =号前的名字  
  0,//   如果没有找到整数时,返回的默认值  
  'c:\forwin95\win.ini'   //   调用的文件名  
  ));  
  向.INI文件写入字符串  
  WritePrivateProfileString(  
  'windows',   //   []中标题的名字  
  'load',   //   要写入“=”号前的字符串  
  'accca',   //要写入的数据  
  'c:\forwin95\win.ini'   //   调用的文件名  
  );  
  向.INI文件写入整数  
  WritePrivateProfileSection(  
  'windows',   //   []中标题的名字  
  'read=100',   //   要写入的数据  
  'c:\forwin95\win.ini'   //   调用的文件名  
  );  
  上面的方法是调用API函数,下面介绍另一种不用API从.INI文件中获取字符的方法  
  var   MyIni:   TIniFile;  
  begin  
  MyIni   :=   TIniFile.Create('WIN.INI');//调用的文件名  
  edit1.text:=MyIni.ReadString('Desktop',   'Wallpaper',   '');//取得字符  
  end;  
  向.INI文件中写入字符的方法  
  var   MyIni:   TIniFile;  
  begin  
  MyIni   :=   TIniFile.Create('WIN.INI');//调用的文件名  
  DelphiIni.WriteString('Desktop',   'Wallpaper',   'c:\a.bmp');  
  end;  
   
  增加一条:用完INI文件后最好将其释放(MyIni.Free;   )  
   
   
  关于ini的说明和学习  
  ===========================  
  一、有必要了解INI文件的结构:  
   
  ;注释  
  [小节名]  
  关键字=值  
  ...  
   
  INI文件允许有多个小节,每个小节又允许有多个关键字,“=”后面是该关键字的值。    
  值的类型有三种:字符串、整型数值和布尔值。其中字符串存贮在INI文件中时没有引号,布尔真值用1表示,布尔假值用0表示。    
   
  注释以分号“;”开头。    
   
  二、定义  
  1、在Interface的Uses节增加IniFiles;    
  2、在Var变量定义部分增加一行:    
   
   
  myinifile:Tinifile;  
   
  然后,就可以对变量myinifile进行创建、打开、读取、写入等操作了。    
  三、打开INI文件  
   
  myinifile:=Tinifile.create(program.ini);  
   
  上面这一行语句将会为变量myinifile与具体的文件program.ini建立联系,然后,就可以通过变量myinifile,来读写program.ini文件中的关键字的值了。    
  值得注意的是,如果括号中的文件名没有指明路径的话,那么这个Program.ini文件会存储在Windows目录中,把Program.ini文件存储在应用程序当前目录中的方法是:为其指定完整的路径及文件名。下面的两条语句可以完成这个功能:    
   
   
  Filename:=ExtractFilePath(Paramstr  
  (0))+program.ini;  
  myinifile:=Tinifile.Create(filename);  
   
  四、读取关键字的值  
  针对INI文件支持的字符串、整型数值、布尔值三种数据类型,TINIfiles类提供了三种不同的对象方法来读取INI文件中关键字的值。    
  假设已定义变量vs、vi、vb分别为string、integer、boolean类型。    
   
   
  vs:=myinifile.Readstring  
  (小节名,关键字,缺省值);  
  vi:=myinifile.Readinteger  
  (小节名,关键字,缺省值);  
  vb:=myinifile.Readbool  
  (小节名,关键字,缺省值);  
   
  其中缺省值为该INI文件不存在该关键字时返回的缺省值。    
  五、写入INI文件  
  同样的,TInifile类也提供了三种不同的对象方法,向INI文件写入字符串、整型数及布尔类型的关键字。    
   
  myinifile.writestring(小节名,关键字,变量或字符串值);  
  myinifile.writeinteger(小节名,关键字,变量或整型数值);  
  myinifile.writebool(小节名,关键字,变量或True或False);  
   
  当这个INI文件不存在时,上面的语句还会自动创建该INI文件。    
  六、删除关键字  
  除了可用写入方法增加一个关键字,Tinifile类还提供了一个删除关键字的对象方法:    
   
  myinifile.DeleteKey(小节名,关键字);  
   
  七、小节操作  
  增加一个小节可用写入的方法来完成,删除一个小节可用下面的对象方法:    
   
  myinifile.EraseSection(小节名);  
   
  另外Tinifile类还提供了三种对象方法来对小节进行操作:    
  myinifile.readsection(小节名,TStrings变量);可将指定小节中的所有关键字名读取至一个字符串列表变量中;    
   
  myinifile.readsections(TStrings变量);可将INI文件中所有小节名读取至一个字符串列表变量中去。    
   
  myinifile.readsectionvalues(小节名,TStrings变量);可将INI文件中指定小节的所有行(包括关键字、=、值)读取至一个字符串列表变量中去。    
   
  八、释放  
   
  在适当的位置用下面的语句释放myinifile:  
  myinifile.distory;  
   
  九、一个实例  
  下面用一个简单的例子(如图),演示了建立、读取、存贮INI文件的方法。myini.ini文件中包含有“程序参数”小节,和用户名称(字符串)、是否正式用户(布尔值)和已运行时间(整型值)三个关键字。程序在窗体建立读取这些数据,并在窗体释放时写myini.ini文件。    
  附源程序清单    
   
   
  unitUnit1;  
  interface  
  uses  
  Windows,Messages,SysUtils,Classes,Graphics,  
  Controls,Forms,Dialogs,inifiles,StdCtrls,ExtCtrls;  
  type  
  TForm1=class(TForm)  
  Edit1:TEdit;  
  CheckBox1:TCheckBox;  
  Edit2:TEdit;  
  Label1:TLabel;  
  Label2:TLabel;  
  Timer1:TTimer;  
  Label3:TLabel;  
  procedureFormCreate(Sender:TObject);  
  procedureFormDestroy(Sender:TObject);  
  procedureTimer1Timer(Sender:TObject);  
  private  
  {Privatedeclarations}  
  public  
  {Publicdeclarations}  
  end;  
  var  
  Form1:TForm1;  
   
  implementation  
  var  
  myinifile:TInifile;  
  {$R*.DFM}  
   
  procedureTForm1.FormCreate(Sender:TObject);  
  var  
  filename:string;  
  begin  
  filename:=ExtractFilePath(paramstr(0))+myini.ini;  
  myinifile:=TInifile.Create(filename);  
  edit1.Text:=myinifile.readstring  
  (程序参数,用户名称,缺省的用户名称);  
  edit2.text:=inttostr(myinifile.readinteger  
  (程序参数,已运行时间,0));  
  checkbox1.Checked:=myinifile.readbool  
  (程序参数,是否正式用户,False);  
  end;  
   
  procedureTForm1.FormDestroy(Sender:TObject);  
  begin  
  myinifile.writestring(程序参数,用户名称,edit1.Text);  
  myinifile.writeinteger(程序参数,已运行时间,  
  strtoint(edit2.text));  
  myinifile.writebool(程序参数,是否正式用户,  
  checkbox1.Checked);  
  myinifile.Destroy;  
  end;  
   
  procedureTForm1.Timer1Timer(Sender:TObject);  
  begin  
  edit2.Text:=inttostr(strtoint(edit2.text)+1);  
  end;  
   
  end.  
   
  ===============================Top

2 楼wkliangsdqd(天元)回复于 2003-01-08 14:28:08 得分 0

楼主的事情还没有搞定吗?  
  这个问题应该已经解决了吧!Top

相关问题

  • 读写配置文件
  • 在VB.net下,有关读写配置文件的问题?
  • 配置文件的读写问题?
  • 怎样创建和读写配置文件?
  • CheckListBox与读写配置文件的问题,分不够再加
  • 紧急救命:配置文件的读写问题!
  • 请问:如何在C#中读写一个配置文件
  • 求一段 读写 配置文件ini的代码
  • 用java实现读写ini配置文件(50分奖励)
  • 关于配置文件的问题(web.config,app.config),读取和写入

关键词

  • win95
  • 文件
  • 文件名
  • 语句
  • 数值
  • myinifile
  • 小节
  • 字符串
  • 关键字
  • 变量

得分解答快速导航

  • 帖主:Cleanshusheng
  • wkliangsdqd

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo