Ini 操作

IniFile 类

IniFile类表示一个Ini文件

  1. var ini = new IniFile();
函数描述用法
setFileName(file) 设置文件名称,绝对路径,也可以在构造函数传入,并不加载文件 ini.setFileName("e:/test.ini")
getFileName() 获取文件名称,绝对路径 var ininame = ini.getFileName()
loadIniFile() 加载传入的路径文件,返回true为加载成功 ini.loadIniFile()
saveIniFile() 保存当前文件,返回true为保存成功 ini.saveIniFile()
checkLoad() 检测当前对象是否加载过ini文件,返回true为加载过 var check = ini.checkLoad()
findSection(name) 在ini里查找section,返回序号(从0开始),返回-1表示没找到 var sidx = ini.findSection("Config")
getSectionCount() 获取ini文件中的section段数量 var cnt = ini.getSectionCount()
getSectionName(sidx) 根据序号获取对应段的名称 var name = ini.getSectionName(0)
findKey(section,keyname) 在section下查找key,返回序号,同名key返回序号最小的,返回-1 表示没找到。 section可以是段名(string),也可以是序号(int) var kidx = ini.findKey("Config","key");var kidx = ini.findKey(0,"key");
getKeyCount(section) 获取段下key的数量。 section可以是段名(string),也可以是序号(int) var cnt = ini.getKeyCount("Config");var cnt = ini.getKeyCount(0);
getKeyName(section,kidx) 获取段下key的名称,kidx表示第几个key。 section可以是段名(string),也可以是序号(int) var name = ini.getKeyName("Config",0);var name = ini.getKeyName(0,0);
getKeyValue(section,key,defstr) 获取键值,返回string,没找到返回defstr,defstr不传默认为 空字符串。 section可以是段名(string),也可以是序号(int)。 key可以是键名(string),也可以是序号(int) var value = ini.getKeyValue("Config","test");var value = ini.getKeyValue(0,"test","aaaa");var value = ini.getKeyValue("Config",0,"aaaa");
addSection(section) 添加一个section,返回true为添加成功 ini.addSection("Config1","test");
delSection(section) 删除一个section,返回true为成功。 section可以是段名(string),也可以是序号(int)。 ini.delSection("Config1");ini.delSection(0);
setSectionName(section,newname) 修改section名称,返回true为成功。 section可以是段名(string),也可以是序号(int)。 ini.setSectionName("Config","Config2");ini.setSectionName(0,"Config2");
delKey(section,key) 删除一个键值。 section可以是段名(string),也可以是序号(int)。 key可以是键名(string),也可以是序号(int) ini.delKey("Config","key");ini.delKey(0,0);
setKeyName(section,key,newname) 修改键名。 section可以是段名(string),也可以是序号(int)。 key可以是键名(string),也可以是序号(int) ini.setKeyName("Config","key","key1");ini.setKeyName(0,0,"key1");
setKeyValue(section,key,value) 修改键值。 section可以是段名(string),也可以是序号(int)。 key可以是键名(string),也可以是序号(int) ini.setKeyValue("Config","key","value");ini.setKeyValue(0,0,"value");
addKeyValue(section,key,value) 添加键值。 section可以是段名(string),也可以是序号(int)。 key是键名(string) ini.addKeyValue("Config","key","value");
appendFile(otherIni) 合并另一个ini文件,键名相同的忽略,不同的新增 ini.appendFile(otherIni);

例子:

  1. function main(parm)
  2. {
  3. var ini = new IniFile(GetRoot() + "test.ini");
  4. if(!ini.loadIniFile())
  5. {
  6. ini.addSection("Config");
  7. ini.addKeyValue("Config","ip","192.168.1.1");
  8. ini.addKeyValue("Config","port","6000");
  9. ini.addSection("Section1");
  10. var fidx = ini.findSection("Section1");
  11. ini.addKeyValue(fidx,"key","value");
  12. ini.saveIniFile();
  13. return;
  14. }
  15. var ip = ini.getKeyValue("Config","ip","192.XXX.XXX");
  16. var ip2 = ini.getKeyValue("Config","ip2","192.XXX.XXX");
  17. var port = 9999;
  18. var fidx = ini.findSection("Config");
  19. var kidx = ini.findKey(fidx,"port");
  20. if(kidx != 1)
  21. {
  22. port = UINT(ini.getKeyValue(fidx,kidx,"9999"));
  23. }
  24. print "ip:" + ip;
  25. print "ip2:" + ip2;
  26. print "port:" + port;
  27. print ini.getKeyValue("Section1","key","err");
  28. }

第一次运行根目录下会产生ini文件

  1. [Config]
  2. ip=192.168.1.1
  3. port=6000
  4. [Section1]
  5. key=value

第二次运行结果:

  1. ip:192.168.1.1
  2. ip2:192.XXX.XXX
  3. port:9999
  4. value