设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 3721|回复: 2
收起左侧

易语言将ini配置项中的所有节名和配置项参数枚举列出来的方法

[复制链接]
发表于 2018-8-31 18:34:11 | 显示全部楼层 |阅读模式
INI文件内容:

  1. [A]
  2. 1=1
  3. 2=2
  4. 3=3
  5. [B]
  6. 1=3
  7. 2=2
  8. 3=1
  9. 4=0


  10. [C]
  11. A=C
  12. B=B
  13. C=A
复制代码

枚举结果:

  1. * “--------节:A--------”
  2. * “名称:1 值:1”
  3. * “名称:2 值:2”
  4. * “名称:3 值:3”
  5. * “--------节:B--------”
  6. * “名称:1 值:3”
  7. * “名称:2 值:2”
  8. * “名称:3 值:1”
  9. * “名称:4 值:0”
  10. * “--------节:C--------”
  11. * “名称:A 值:C”
  12. * “名称:B 值:B”
  13. * “名称:C 值:A”
复制代码


有bug在楼下回复。

  1. .版本 2
  2. .支持库 spec

  3. .程序集 程序集1

  4. .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码


  5. _临时子程序 ()  ' 在初始化代码执行完毕后调用测试代码
  6. 返回 (0)  ' 可以根据您的需要返回任意数值

  7. .子程序 _临时子程序
  8. .局部变量 ini文件名, 文本型
  9. .局部变量 节名称表, 文本型, , "0"
  10. .局部变量 计数, 整数型
  11. .局部变量 名称表, 文本型, , "0"
  12. .局部变量 值表, 文本型, , "0"
  13. .局部变量 计数2, 整数型

  14. ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
  15. ini文件名 = 取运行目录 () + “\Test枚举.ini”
  16. 写配置项 (ini文件名, “A”, “1”, “1”)
  17. 写配置项 (ini文件名, “A”, “2”, “2”)
  18. 写配置项 (ini文件名, “A”, “3”, “3”)

  19. 写配置项 (ini文件名, “B”, “1”, “3”)
  20. 写配置项 (ini文件名, “B”, “2”, “2”)
  21. 写配置项 (ini文件名, “B”, “3”, “1”)
  22. 写配置项 (ini文件名, “B”, “4”, “0”)


  23. 写配置项 (ini文件名, “C”, “A”, “C”)
  24. 写配置项 (ini文件名, “C”, “B”, “B”)
  25. 写配置项 (ini文件名, “C”, “C”, “A”)
  26. 枚举配置项节名称 (ini文件名, 节名称表)


  27. .计次循环首 (取数组成员数 (节名称表), 计数)
  28.     枚举配置项 (ini文件名, 节名称表 [计数], 名称表, 值表, 假)
  29.     调试输出 (“--------节:” + 节名称表 [计数] + “--------”)
  30.     .计次循环首 (取数组成员数 (名称表), 计数2)
  31.         调试输出 (“名称:” + 到文本 (名称表 [计数2]) + “ 值:” + 到文本 (值表 [计数2]))

  32.     .计次循环尾 ()
  33. .计次循环尾 ()

  34. .子程序 枚举配置项, 逻辑型, 公开, 通过配置项节名称枚举出所有的配置项名称与值
  35. .参数 配置文件名, 文本型, , 指定配置文件的名称,通常以.ini作为文件名后缀。
  36. .参数 节名称, 文本型, , 通过指定节名称列出所有的配置项名称与值
  37. .参数 配置项名称表, 文本型, 参考 数组, 枚举结果将通过参考数组的方式写入变量中。
  38. .参数 配置项值表, 文本型, 参考 数组, 1行中只能有1个等于号,否则可能会出现问题。
  39. .参数 读入注释, 逻辑型, 可空, 是否将分号后面的文本写入配置项值表中。
  40. .局部变量 内容分割, 文本型, , "0"
  41. .局部变量 行数, 整数型
  42. .局部变量 计数, 整数型
  43. .局部变量 取到的节, 文本型
  44. .局部变量 开始行, 整数型
  45. .局部变量 结束行, 整数型
  46. .局部变量 行, 文本型
  47. .局部变量 内容分割2, 文本型, , "0"
  48. .局部变量 分割数, 整数型
  49. .局部变量 计数2, 整数型
  50. .局部变量 文本2, 文本型
  51. .局部变量 内容分割3, 文本型, , "0"

  52. 重定义数组 (配置项名称表, 假, 0)
  53. 重定义数组 (配置项值表, 假, 0)
  54. 内容分割 = 分割文本 (到文本 (读入文件 (配置文件名)), #换行符, )
  55. 行数 = 取数组成员数 (内容分割)
  56. .计次循环首 (行数, 计数)
  57.     .判断开始 (行是否为节 (内容分割 [计数], 取到的节) 且 取到的节 = 节名称)
  58.         开始行 = 计数 + 1
  59.     .判断 (开始行 > 0 且 行是否为节 (内容分割 [计数]))
  60.         结束行 = 计数 - 1
  61.         跳出循环 ()
  62.     .默认

  63.     .判断结束

  64. .计次循环尾 ()
  65. .判断开始 (开始行 = 0)
  66.     返回 (假)
  67. .判断 (结束行 = 0)
  68.     结束行 = 行数
  69. .默认

  70. .判断结束
  71. .变量循环首 (开始行, 结束行, 1, 计数)
  72.     行 = 删首尾空 (内容分割 [计数])
  73.     .如果真 (行 ≠ “” 且 行是否为注释 (行) = 假 且 寻找文本 (行, “=”, , 假) ≠ -1)
  74.         内容分割2 = 分割文本 (行, “=”, )
  75.         重定义数组 (内容分割2, 真, 2)
  76.         加入成员 (配置项名称表, 内容分割2 [1])
  77.         .如果 (读入注释)
  78.             加入成员 (配置项值表, 内容分割2 [2])
  79.         .否则
  80.             内容分割3 = 分割文本 (内容分割2 [2], “;”, )
  81.             .如果 (取数组成员数 (内容分割3) = 0)
  82.                 加入成员 (配置项值表, 内容分割2 [2])
  83.             .否则
  84.                 加入成员 (配置项值表, 内容分割3 [1])

  85.             .如果结束

  86.         .如果结束

  87.     .如果真结束

  88. .变量循环尾 ()
  89. 返回 (取数组成员数 (配置项名称表) > 0 且 取数组成员数 (配置项值表) > 0)


  90. .子程序 枚举配置项节名称, 逻辑型, 公开, 通过配置项文件名枚举出所有的节名称
  91. .参数 配置文件名, 文本型, , 指定配置文件的名称,通常以.ini作为文件名后缀。
  92. .参数 节名称表, 文本型, 参考 数组, 配置项的所有节名称将通过参考数组写入变量中。
  93. .局部变量 内容分割, 文本型, , "0"
  94. .局部变量 计数, 整数型
  95. .局部变量 行, 文本型
  96. .局部变量 节名称, 文本型

  97. 重定义数组 (节名称表, 假, 0)
  98. 内容分割 = 分割文本 (到文本 (读入文件 (配置文件名)), #换行符, )
  99. .计次循环首 (取数组成员数 (内容分割), 计数)
  100.     行 = 删首尾空 (内容分割 [计数])
  101.     .如果真 (行是否为节 (行, 节名称))
  102.         加入成员 (节名称表, 文本去除左右1字节 (行))
  103.     .如果真结束

  104. .计次循环尾 ()
  105. 返回 (取数组成员数 (节名称表) > 0)


  106. .子程序 行是否为节, 逻辑型
  107. .参数 ini行, 文本型
  108. .参数 节名称, 文本型, 参考 可空
  109. .局部变量 文本, 文本型
  110. .局部变量 分割文本, 文本型, , "0"

  111. 文本 = 删首尾空 (ini行)
  112. .如果真 (寻找文本 (文本, “[”, , 假) = -1 或 寻找文本 (文本, “]”, , 假) = -1 或 行是否为注释 (文本))
  113.     返回 (假)
  114. .如果真结束
  115. 分割文本 = 分割文本 (文本, “]”, )
  116. 分割文本 = 分割文本 (分割文本 [1], “[”, )
  117. 节名称 = 分割文本 [2]
  118. 返回 (分割文本 [2] ≠ “”)


  119. .子程序 行是否为注释, 逻辑型
  120. .参数 ini行, 文本型

  121. 返回 (取文本左边 (删首尾空 (ini行), 1) = “;”)


  122. .子程序 文本去除左右1字节, 文本型
  123. .参数 文本, 文本型

  124. 返回 (取文本中间 (文本, 2, 取文本长度 (文本) - 2))


复制代码


相关帖子

发表于 2018-9-1 17:28:07 | 显示全部楼层
回也是一脸懵逼
您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-3-29 07:43 , Processed in 0.604034 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表