一个关于创建,写,读INI文件的问题(15分)

  • 主题发起人 主题发起人 eighteenzl
  • 开始时间 开始时间
E

eighteenzl

Unregistered / Unconfirmed
GUEST, unregistred user!
请问各位大侠,在DEIPHI中如何创建一个INI文件,..如何写INI文件,及如何读取INI文件里面的内容,
各位如果有这方面的例子请发给在下分享一下,在下万分感谢....
有这方面的资料也行,请告诉我下载的地址,

谢谢!
 
procedure CreateConfig;//创建ini文件
var txtFile:TextFile;
begin
assignfile(txtFile,'SysConfig.ini');
rewrite(txtFile);
Append(txtFile);
writeln(txtFile,'[config]');
writeln(txtFile,'OrderID=I0001');
writeln(txtFile,'CallOutID=U0001');
writeln(txtFile,'RecPath=');
CloseFile(txtFile);
end;

procedure SaveConfig(ConfigFile:Reco_Record);//写ini文件
var txtFile:TInifile;
begin
txtFile:=TIniFile.Create(GetCurrentDir+'/SysConfig.ini');
txtFile.WriteString('config','RecPath',ConfigFile.RecPath);
txtFile.WriteString('config','OrderID',ConfigFile.OrderID);
txtFile.WriteString('config','CallOutID',ConfigFile.CallOutID);
txtFile.Free;
end;

function GetConfig:Reco_Record;//读取ini文件
var txtFile:TIniFile;
rSysConfig:Reco_record;
begin
if not FileExists(GetCurrentDir+'/SysConfig.ini') then
CreateConfig;
txtFile:=TIniFile.Create(GetCurrentDir+'/SysConfig.ini');
rSysConfig.RecPath:=txtFile.ReadString('config','RecPath','');
rSysConfig.OrderID:=txtFile.ReadString('config','OrderID','I0001');
rSysConfig.CallOutID:= txtFile.ReadString('config','CallOutID','U0001');
txtFile.Free;
if trim(rSysConfig.RecPath)='' then
rSysConfig.RecPath:= GetCurrentDir+'/';
result:=rSysConfig;
end;
 
1.uses :inifiles
2.implementation
var
myinifile:Tinifiles;
3.打開ini文件
myinifile:=Tinifile.create(program.ini);
var filename:string;
filename:=extractfilepath(paramstr(0)+program.ini)
myinifile:=Tinifile.create(filename);
4.寫入ini
myinifile.writestring(小節名,關鍵字,變量或字符串);
5.讀取ini
myinifile.readstring(小節名,關鍵字,變量或字符串);
6.destory ini
myinifile.destory;
 
我比较喜欢zhaoxuncai的这种简单的,对新手来说这种容易看,呵呵,上面那种稍微复杂点
 
谢谢,你们都是高手,但是我始终找不到INI文件写在什么地方,
还有就是能不能帮我把你们的代码注释一下啊,
谢谢......
 
楼上的啊,都这么祥细了你还要注解,服了YOU
 
ini文件写在硬盘上你指定的目录内.
 
写在硬盘上程序目录或指定的目录内
 
写INI文件用TextFile就行

代码:
var i:integer;
    TxtFile: TextFile;
begin
           AssignFile(TxtFile,'jssj.ini');
        ReWrite(TxtFile);
        Writeln(TxtFile,'################################################################');
        Writeln(TxtFile,'#      程序设计:xxxxxx  QQ:4958199   E-Mail: xxxxx@xxx.xxx   #');
        Writeln(TxtFile,'################################################################');
        Writeln(TxtFile,'#                                                              #');
        Writeln(TxtFile,'#          每60秒扫描一次,B股的发送结束标志为:FileLst1,       #');
        Writeln(TxtFile,'#      JSMX和CYA 同时发送,因CAY并非每天发送,所以在JSMX       #');
        Writeln(TxtFile,'#      FileLst1,F2,G4同时收到后,再扫描两次,就判断接收      #');
        Writeln(TxtFile,'#      完成,以PC喇叭发声通知。                                #');
        Writeln(TxtFile,'#          在WIN2K下测试正常,WIN98下勉强也能用,但PC喇叭      #');
        Writeln(TxtFile,'#      不能发声,而且网络连接有时会莫名其妙的中断,所以尽      #');
        Writeln(TxtFile,'#      量在WIN2K 下使用(网关设置为:172.16.xx.200 ),比如      #');
        Writeln(TxtFile,'#      放到网上交易处理机上,闭市后运行。                      #');
        Writeln(TxtFile,'#                                                              #');
        Writeln(TxtFile,'################################################################');
        Writeln(TxtFile,'                                                        ');
        Writeln(TxtFile,'[INFO]');
        Writeln(TxtFile,';营业部编号');
        Writeln(TxtFile,'BH=88');
        Writeln(TxtFile,';上海A股报盘席位号');
        Writeln(TxtFile,'XWH=12345');
        Writeln(TxtFile,';结算数据所在服务器路径(例://172.16.97.2/88)');
        Writeln(TxtFile,'ServerPath=//172.16.97.2/88');
        Writeln(TxtFile,';登陆用户名');
        Writeln(TxtFile,'UserName=hbzq88');
        Writeln(TxtFile,';登陆密码');
        Writeln(TxtFile,'PassWord=hbzq88');
        Writeln(TxtFile,';映射结算数据所在服务器的驱动器盘符,不要与现有的映射冲突');
        Writeln(TxtFile,'DiskBH=X:');
        Writeln(TxtFile,'                                                        ');
        Writeln(TxtFile,'##################################################################');
        Writeln(TxtFile,'#                                                                #');
        Writeln(TxtFile,'#        程序默认拷贝沪B的六个文件(BS100186.DBF,BD600186.DBF   #');
        Writeln(TxtFile,'#    BD500186.DBF,BD300186.DBF,BC100186.DBF,QS00186.DBF),   #');
        Writeln(TxtFile,'#    深B的四个文件(SJSDZ.DBF,SJSHB.DBF,SJSTJ.DBF,SJSGF.DBF) #');
        Writeln(TxtFile,'#    另外还有:JSMX,CYA,CYB,FileLst1,F2,G4,G7JS548,DZ00...等等   #');
        Writeln(TxtFile,'#    共计二十个文件。                                            #');
        Writeln(TxtFile,'#        如还有其它需求,下面几行可以扩展你想要拷贝的文件,必须  #');
        Writeln(TxtFile,'#    写绝对路径并且对该目录有读权限,如果扩展名随日期变化,要写  #');
        Writeln(TxtFile,'#    成“.MDD”,最多允许增加10个文件,关键字File1 - File10 。    #');
        Writeln(TxtFile,'#                                                                #');
        Writeln(TxtFile,'##################################################################');
        Writeln(TxtFile,'                                                        ');
        Writeln(TxtFile,'File1=//172.16.97.2/G7/ZDJHB.DBF');
        Writeln(TxtFile,'File2=//172.16.97.2/G7/ZDJZHHB.DBF');
        Writeln(TxtFile,';File3=//172.16.97.2/88/f2/fsaf.MDD');
        Writeln(TxtFile,';File4=//172.16.97.2/88/g4/hjtrjk.DBF');
        Writeln(TxtFile,';File5=//172.16.97.2/88/send/uiouy.TXT');
        CloseFile(TxtFile);
end;
 
//读取Ini文件中的内容,sSection 节名,sKey关键字,sValue 读取的缺省值
//例子 ReadSystemIni('SYSTEM','SERVERNAME','Jakersen');
function ReadSystemIni(sSection, sKey: string; sValue: Variant): Variant;
var
Ini: TIniFile;
begin
Ini := TIniFile.Create(GetExePath() + '/' + SYSTEM_LOCAL_INI);
try
case varType(sValue) of
varString:
Result := Ini.ReadString(sSection, sKey, sValue);
varInteger:
Result := Ini.ReadInteger(sSection, sKey, sValue);
varBoolean:
Result := Ini.ReadBool(sSection, sKey, sValue);
varDate:
Result := Ini.ReadDatetime(sSection, sKey, sValue);
varDouble:
Result := ini.ReadFloat(sSection, sKey, sValue);
end;
finally
Ini.Free;
end;
end;

//写内容到Ini文件中,sKey关键字,sValue 要写入的值
//例子 WriteSystemIni('SYSTEM','SERVERNAME','Jakersen');
function WriteSystemIni(sSection, sKey, sValue: Variant): Boolean;
var
Ini: TIniFile;
begin
//Ini文件创建在运行的Exe文件相同路径
Ini := TIniFile.Create(GetExePath() + '/' + 'Ini文件名');
try
case varType(sValue) of
varString:
Ini.WriteString(sSection, sKey, sValue);
varInteger:
Ini.WriteInteger(sSection, sKey, sValue);
varBoolean:
Ini.WriteBool(sSection, sKey, sValue);
varDate:
Ini.WriteDatetime(sSection, sKey, sValue);
varDouble:
ini.WriteFloat(sSection, sKey, sValue);
end;
finally
Ini.Free;
end;
end;
搞一个工程文件放进去试一下,再打开工程文件所在的目录,看看Ini文件就清楚了
 
1、在最上面的use里面加inifiles

2、增加以下全局变量及函数
var
myinifile:Tinifile; //ini文件变量
procedure creatini(); //公用函数,创建ini文件

函数实现过程如下:
procedure creatini(); //公用函数,打开ini文件
var
filename:string;
begin
filename:=ExtractFilePath(paramstr(0))+'carname.ini';
myinifile:=TInifile.Create(filename);
end;


3、使用方法:


creatini();

myinifile.WriteString('运营',LabeledEdit001.EditLabel.Caption,LabeledEdit001.Text);

s:=myinifile.readstring('租赁',inttostr(i),'');

myinifile.Destroy;
 
还有其他的方法没有?高手指点~!
 
后退
顶部