server 发表于 2024-4-8 20:06:46

@创世魂 给代码更新 合并 到官方代码

刚好用到,而自身又不支持,我就给改了改。你把这个代码 合并进去,给加个参数 : 是否多字节

测试了,没问题。

<火山程序 类型 = "通常" 版本 = 1 />

类 配置项 <公开 折叠>
{
    方法 test
    {
      变量 fileini <类型 = 文本型>
      fileini = 取特定目录 (特定目录类型.系统桌面) + "cg.ini"
      变量 index1 <类型 = 整数 值 = 0>
      变量 index2 <类型 = 整数 值 = 0>
      计次循环 (3)
      {
            index2 = 0
            计次循环 (3)
            {
                配置项.写 (fileini, "aaa" + 到文本 (index1), "name" + 到文本 (index2), "val" + 到文本 (index2))
                index2 = index2 + 1
            }
            index1 = index1 + 1
      }
      index1 = 0
      计次循环 (3)
      {
            index2 = 0
            计次循环 (3)
            {
                调试输出 ("aaa" + 到文本 (index1), "name" + 到文本 (index2), 配置项.读 (fileini, "aaa" + 到文本 (index1), "name" + 到文本 (index2)))
                index2 = index2 + 1
            }
            index1 = index1 + 1
      }

      调试输出 (配置项.取节名 (fileini))

    }

    方法 读 <公开 静态 类型 = 文本型 注释 = "读取并返回所指定配置文件中指定项目的文本内容" 折叠>
    参数 配置文件名 <类型 = 文本型 注释 = "指定配置文件的名称,通常以\"ini\"作为文件名后缀.">
    参数 节名称 <类型 = 文本型 注释 = "指定欲读入配置项所处节的名称">
    参数 配置项名称 <类型 = 文本型 注释 = "指定欲读入配置项在其节中的名称">
    参数 默认值 <类型 = 文本型 注释 = "如果所指定配置项不存在,将返回此默认值文本." @默认值 = "">
    {
      变量 结果变量 <静态 类型 = 字节集类>
      如果 (文本是否为空 (配置文件名) == 假 && 文本是否为空 (节名称) == 假 && 文本是否为空 (配置项名称) == 假)
      {
            结果变量.分配字节集 (10240, 真)
            @ GetPrivateProfileStringA (GetMbsText (@<节名称>.GetText (), CVolMem (), NULL), GetMbsText (@<配置项名称>.GetText (), CVolMem (), NULL), GetMbsText (@<默认值>.GetText (), CVolMem (), NULL), (LPSTR)@<结果变量>.GetPtr (), @<结果变量>.GetSize (),GetMbsText (@<配置文件名>.GetText (), CVolMem (), NULL));
      }
      返回 (多字节到文本 (结果变量))
    }

    方法 写 <公开 静态 类型 = 逻辑型 注释 = "将指定文本内容写入指定配置项中或者删除指定的配置项或节," 注释 = "如果指定配置文件不存在,将会自动创建." 返回值注释 = "返回是否成功"
            折叠 折叠2 @禁止流程检查 = 真>
    参数 配置文件名 <类型 = 文本型 注释 = "指定配置文件的名称,通常以\"ini\"作为文件名后缀.">
    参数 节名称 <类型 = 文本型 注释 = "指定欲写入配置项所处节的名称">
    参数 配置项名称 <类型 = 文本型 注释 = "指定欲写入配置项在其节中的名称.如果为空对象,则删除指定节及其下的所有配置项." @默认值 = 空对象>
    参数 欲写入值 <类型 = 文本型 注释 = "指定欲写入到指定配置项中的文本,如果为空对象,则删除所指定配置项." @默认值 = 空对象>
    {
      @ return WritePrivateProfileStringA (GetMbsText (@<节名称>.GetText (), CVolMem (), NULL), (@<配置项名称>.IsNullObject () ? NULL : GetMbsText (@<配置项名称>.GetText (), CVolMem (), NULL)), (@<欲写入值>.IsNullObject () ? NULL : GetMbsText (@<欲写入值>.GetText (), CVolMem (), NULL)), GetMbsText (@<配置文件名>.GetText (), CVolMem (), NULL));
    }

    方法 取节名 <公开 静态 类型 = 文本数组类 注释 = "返回指定配置文件中所有已有节名的文本数组" 折叠>
    参数 配置文件名 <类型 = 文本型 注释 = "指定配置文件的名称,通常以\"ini\"作为文件名后缀.">
    {
      变量 结果变量 <类型 = 文本数组类>
      变量 节名 <类型 = 字节集类>
      变量 节名组 <类型 = 字节集数组类>
      节名.分配字节集 (256 * 1024, 真)
      @ GetPrivateProfileSectionNamesA ((LPSTR)@<节名>.GetPtr (), @<节名>.GetSize (), GetMbsText (@<配置文件名>.GetText (), CVolMem (), NULL));
      节名.删除字节集尾部数据 (节名.寻找字节集 (创建字节集 (0, 0), ))
      分割字节集 (节名, 创建字节集 (0), 节名组, )
      节名组.枚举循环 ()
      {
            结果变量.加入成员 (多字节到文本 (节名组.取枚举值 ()))
      }
      返回 (结果变量)
    }

    #
}



a759077146 发表于 2024-4-8 23:18:45

:噜阿噜

server 发表于 2024-4-9 13:06:37

配置项还有其他函数,暂时用不上,不准备搞起了。
那位火友有兴趣可以搞一搞。
页: [1]
查看完整版本: @创世魂 给代码更新 合并 到官方代码