INI

INI 排序读取

用一篇说明讲清 Ini_Sort 系列的生成、读取、计数和清理流程,适合需要按键或按值遍历整个节内容的场景。

命令用途

Ini_Sort_* 是一组配套命令,不是单条命令各自独立完成工作的结构。

这组命令的核心作用,是把某个 INI 节里的键值先按指定规则排序到内存标识中,再按索引逐项读取节名、键名、值或键值组合。

它适合排行榜、批量配置扫描、按分数排序的名单读取,以及需要先排序再循环处理的数据场景。

命令组

命令最小格式一句话用途
INI_SORT_READ_SECTION_VALUES<文件路径> <节名> <排序字段> <排序类型> <排序方式> <标识名> <是否保存到文件>读取指定节并生成排序结果标识
INI_SORT_SECTION_VALUES_COUNT<标识名> <变量>获取排序结果数量
INI_SORT_GET_SECTION_STRING<标识名> <变量>读取排序结果对应的节名
INI_SORT_GET_IDENT_STRING<标识名> <索引> <变量>读取指定排序项的键名
INI_SORT_GET_IDENT_VALUE_STRING<标识名> <索引> <变量>读取指定排序项的键值组合文本
INI_SORT_GET_VALUE_STRING<标识名> <索引> <变量>读取指定排序项的字符串值
INI_SORT_GET_VALUE_INTEGER<标识名> <索引> <变量>读取指定排序项的整数值
INI_SORT_DELETE<标识名|ALL>删除排序结果标识

调用顺序

  1. 先用 INI_SORT_READ_SECTION_VALUES 把节内容读进内存,并生成一个排序结果标识。
  2. 用 INI_SORT_SECTION_VALUES_COUNT 拿到结果数量,决定后续循环范围(结果包含节本身,节在列表第一个,数据从索引 1 开始)。
  3. 根据你要读的是节名、键名、字符串值、整数值还是键值组合,选择对应的 GET 命令。
  4. 用完后执行 INI_SORT_DELETE,避免临时结果一直留在内存里。

如果你把这组命令拆开孤立记忆,很容易在实际脚本里漏掉“先生成结果”或“最后清理标识”这两步。

排序参数说明

参数可选值说明
排序字段0 / 10 按键排序,1 按值排序
排序类型0 / 10 按字符串排序,1 按整数排序
排序方式0 / 10 升序,1 降序
是否保存到文件0 / 10 不保存文件,1 保存排序后的文件内容

最容易出错的地方不是排序方式,而是把字符串值当整数排序,或者把整数值当字符串排序。

常用读取分工

需求对应命令说明
拿结果总数INI_SORT_SECTION_VALUES_COUNT用于决定循环次数
拿当前结果对应的节名INI_SORT_GET_SECTION_STRING适合跨节整理或显示来源节名
拿当前结果对应的键名INI_SORT_GET_IDENT_STRING适合知道是谁排在当前索引
拿字符串值INI_SORT_GET_VALUE_STRING结果应写入 S 或 A 变量
拿整数值INI_SORT_GET_VALUE_INTEGER结果应写入 P、G、D、M 或 H 变量
一次拿键和值的组合文本INI_SORT_GET_IDENT_VALUE_STRING适合直接显示或拼接输出

示例

基础用法

#ACT
INI_SORT_READ_SECTION_VALUES .\Rank.ini Warrior 1 1 1 排行结果 0
INI_SORT_SECTION_VALUES_COUNT 排行结果 M10
INI_SORT_GET_IDENT_STRING 排行结果 1 S10
INI_SORT_GET_VALUE_INTEGER 排行结果 1 M11

这段写法会把 Rank.ini 中 Warrior 节的内容按整数值降序整理到 排行结果,再读取第一项的键名和数值。

常见变体

#ACT
INI_SORT_READ_SECTION_VALUES .\Quest.ini Daily 0 0 0 任务清单 0
INI_SORT_GET_IDENT_VALUE_STRING 任务清单 0 S20
INI_SORT_DELETE 任务清单

这类写法适合先按键名字典序读取任务配置,再把某一项的键值组合文本直接取出来使用。

注意事项

  • Ini_Sort_* 是文档里的系列速查名,实际执行时仍然使用各自的大写命令,例如 INI_SORT_READ_SECTION_VALUES、INI_SORT_GET_VALUE_INTEGER。
  • 读取字符串值时使用 S/A 变量,读取整数值时使用 P/G/D/M/H 变量。
  • 如果你只想读单个键值,不需要排序和逐项遍历,通常应回到 Ini_Read_String 或 Ini_Read_Integer。
  • 排序结果属于内存中的临时标识,用完后建议及时 INI_SORT_DELETE。

相关命令