开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 403|回复: 23
收起左侧

[易语言纯源码] Qini .ini 配置文件 快速修改 双重选取 实时读取 快捷可靠

[复制链接]
结帖率:70% (7/10)
发表于 6 天前 | 显示全部楼层 |阅读模式   福建省泉州市
分享源码
界面截图:
是否带模块: 调用了模块
备注说明: -
本帖最后由 王之能够21wz 于 2026-8-1 19:48 编辑
易语言配置文件编辑器(Qini)程序分析报告 千问AI生成
程序核心功能
该程序是一款专为配置文件(特别是类INI格式)设计的可视化编辑工具,具备以下核心功能模块:
文件读取与加载
• 支持两种方式加载文件:
• 通过“读取文件”按钮触发通用对话框选择文件
• 支持拖放操作直接将文件拖入窗口
• 加载后自动记录文件路径至编辑框位置.内容
• 使用读入文件()函数获取原始字节集
编码识别与转换
• 调用文件_取文本编码()判断文件编码类型
• 根据返回值进行相应解码:
• 值为1:视为UTF-8编码,使用编码_Utf8Ansi转换
• 值为2:视为Unicode编码,使用编码_UnicodeAnsi转换
• 其他情况:直接转为文本显示
• 确保不同编码的配置文件均可正确显示中文内容
配置项管理
  功能
  
  实现方式
  
  读取节名
  
  文件_取配置节名数组(文件路径, 节名数组)
  
  读取项名
  
  文件_取配置项名数组(文件路径, 节名, 项名数组)
  
  修改值
  
  写配置项(文件路径, , , )
  
  修改节名
  
  在当前节范围内查找 [旧节名 并替换
  
  修改项名
  
  在目标节内查找 旧项= 并替换为 新项=
  

文件保存与导出
即时保存:点击“修改值”、“修改节”、“修改项”按钮后立即写回原文件
另存为:通过“另存”按钮打开保存对话框,支持自定义路径
另暂存:生成临时文件并用资源管理器选中显示
MD5校验与变更监控
• 初始加载时计算文件MD5值并存储于全局变量MD5
• 通过时钟1周期性(100ms)检查当前文件MD5
• 若发现不一致,则弹出提示询问是否重新读取
• 用户可勾选“选择框.选中”实现自动重载


任务执行工作流
完整用户操作流程

graph TD
    A[启动程序] --> B{创建窗口完毕}
    B --> C[注册拖放控件]
    C --> D[等待用户输入]
    D --> E1[拖放文件 或 ]
    D --> E2[点击读取按钮]
    E1 & E2 --> F[调用 _拖放对象1_得到文件]
    F --> G[读取文件路径]
    G --> H[计算初始MD5]
    H --> I[识别编码并转换显示]
    I --> J[展示内容于编辑框]
    J --> K[启用时钟监控外部变更]
    K --> L[用户编辑内容]
    L --> M{触发修改动作?}
    M -->|是| N[执行对应修改子程序]
    N --> O[写回文件]
    O --> P[刷新界面]
    M -->|否| Q[持续监控]

数据处理流程

1. 输入阶段
   - 获取文件路径 → 读取原始字节集 → 判断编码类型 → 解码为ANSI文本

2. 显示阶段
   - 将解码后文本填充至编辑框内容- 记录初始MD5值用于后续比对

3. 交互阶段
   - 用户点击内容区域 → 触发选取位置()定位当前节/项/值
   - 用户修改 → 提交更改 → 写入磁盘 → 重新加载以保持一致性

4. 输出阶段
   - 支持三种输出模式:原地保存、另存为、临时保存查看



模块结构分析
程序集与变量结构
  类型
  
  名称
  
  说明
  
  程序集
  
  窗口程序集_启动窗口
  
  主界面逻辑容器
  
  全局变量
  
  MD5
  
  存储当前文件的MD5校验值
  
  局部变量
  
  k, i, h等
  
  用于循环、状态判断、临时存储
  

子程序清单及功能描述
  编号
  
  子程序名称
  
  参数
  
  功能描述
  
  1
  
  _按钮_读取文件_被单击
  
  无
  
  打开文件对话框并加载选定文件
  
  2
  
  __启动窗口_创建完毕
  
  无
  
  初始化拖放功能
  
  3
  
  _拖放对象1_得到文件
  
  接收到的文件路径
  
  核心加载入口,处理编码转换与显示
  
  4
  
  _时钟1_周期事件
  
  无
  
  监控外部文件变更并提示同步
  
  5
  
  _按钮_修改值_被单击
  
  无
  
  更新指定配置项的值
  
  6
  
  _编辑框内容_鼠标左键被按下
  
  位置参数
  
  触发光标所在行的节/项/值提取
  
  7
  
  选取位置
  
  无
  
  解析当前光标所在行的配置结构
  
  8
  
  取位置对应行号
  
  源文本, 字符位置
  
  将编辑框中的字符偏移转换为行号
  
  9
  
  取字符数
  
  文本
  
  计算包含中文的文本实际字符数(非字节数)
  
  10
  
  _按钮_修改节_被单击
  
  无
  
  修改当前节名称
  
  11
  
  _按钮_修改项_被单击
  
  无
  
  修改当前项名称
  
  12
  
  _编辑框节_调节钮被按下
  
  按钮值
  
  在节名列表中上下切换
  
  13
  
  _编辑框项_调节钮被按下
  
  按钮值
  
  在项名列表中上下切换
  
  14
  
  _按钮_另暂存_被单击
  
  无
  
  将当前内容保存至临时文件并选中显示
  
  15
  
  _按钮_另存_被单击
  
  无
  
  另存为新文件
  

模块调用关系
_拖放对象1_得到文件是核心枢纽,被多个子程序调用:
_按钮_读取文件_被单击
_时钟1_周期事件(条件触发)
_按钮_修改值_被单击
_按钮_修改节_被单击
_按钮_修改项_被单击
选取位置()_编辑框内容_鼠标左键被按下和其他修改操作间接调用
文件_取配置节名数组文件_取配置项名数组被调节钮事件调用以实现导航


精益模块实现细节
程序引用了典型的“精益模块”设计思想,主要体现在对配置文件结构化访问的支持上。
引用的精益模块函数
  函数名
  
  调用位置
  
  作用
  
  文件_取配置节名数组
  
  _编辑框节_调节钮被按下
  
  获取所有节名用于上下切换导航
  
  文件_取配置项名数组
  
  _编辑框项_调节钮被按下
  
  获取当前节下所有项名用于切换
  

在任务规划中的作用
提升用户体验:允许用户通过调节钮快速在节/项之间跳转,无需手动输入
增强程序健壮性:避免因手动输入错误导致找不到配置项的问题
实现智能感知:结合当前编辑位置自动填充建议值
降低开发复杂度:复用成熟模块,避免重复编写解析逻辑
技术协作机制

• 这些函数虽然未在当前源码中实现,但从调用方式可知其接口设计清晰:easylanguage
  文件_取配置节名数组(文件路径, 输出数组)
  文件_取配置项名数组(文件路径, 节名, 输出数组)

• 输出参数采用传引用方式填充结果数组,符合易语言常见编程范式
• 与主程序形成松耦合结构,便于后期维护升级


程序特点与优势
特色功能
  特性
  
  描述
  
  多编码兼容
  
  支持GBK、UTF-8、Unicode等多种编码格式自动识别
  
  实时外部监控
  
  利用MD5校验实现文件外部变更检测
  
  结构化编辑
  
  将平面文本转化为节→项→值三级结构进行操作
  
  拖放友好
  
  支持文件拖拽加载,提升操作效率
  
  临时快照
  
  “另暂存”功能便于调试与分享当前状态
  

用户体验设计
智能定位:点击任意配置行,自动解析并填充节/项/值到对应输入框
双向联动:修改输入框内容可反向影响文本区,反之亦然
快捷导航:通过调节钮实现节/项的快速遍历
视觉反馈:标签md5实时显示当前校验值,增强可信度
错误处理机制
• 文件写入失败时弹出明确错误提示:“写入失败”或“另存失败”
• 对空值或无效操作进行前置判断(如节名为空时不执行修改)
• 使用如果真 (条件)结构进行安全判断,防止异常中断
• 临时文件操作失败时提示具体路径,便于排查问题


技术实现要点
编码处理机制
• 使用文件_取文本编码()判断原始编码类型
• 针对不同编码调用专用转换函数:
• UTF-8 → ANSI:编码_Utf8Ansi
• Unicode → ANSI:编码_UnicodeAnsi
• 最终统一以ANSI形式显示,保证编辑框兼容性
文件操作策略
• 读取:读入文件()一次性加载整个文件
• 写入:写到文件(路径, 到字节集(文本))将ANSI文本重新编码为字节集写入
• 临时文件:取临时文件名()生成唯一路径,配合explorer /select实现可视化定位
MD5校验实现
• 利用校验_md5(数据, 是否转为十六进制, )函数
• 数据来源:读入文件(编辑框位置.内容)
• 十六进制输出:第二个参数为
• 存储位置:全局变量MD5保存初始值,标签md5.标题显示实时值
配置项解析算法
节名识别:正则匹配^[.*]$格式的行
项值提取:寻找第一个=符号分割键值
作用域控制:修改项名时限定在当前节范围内查找
精确替换:仅替换行首的项名,保留等号后的值部分
文本定位与计数
取位置对应行号()函数实现字符位置到行号的映射:
• 分割文本为行数组
• 累加每行长度(含换行符占2字节)
• 定位首次超过给定字符位置的行
取字符数()自定义函数解决中文计数问题:
• 遍历字节集,>127视为双字节字符(GBK)
• 单字符计数+1,无论单双字节
• 解决了易语言默认取文本长度()返回字节数的问题因控件问题,需要2次点击选中才可正常使用,该缺陷无实际影响正常使用。
回复可见源码
游客,如果您要查看本帖隐藏内容请回复






补充内容 (2026-8-2 20:44):
新增:自动切换保存编码、添加新节、添加新项、添加新值、配置文件合并
以下是新 读写配置源码,
https://qeaget.lanzout.com/ixiAn407e03e
密码:qini

补充内容 (2026-8-2 20:46):
以下是编译好的成品储存地 (exe)
https://qeaget.lanzout.com/b00rp5eopc
密码:qini

评分

参与人数 1好评 +1 收起 理由
805400753 + 1 不行啊,文本编码是UTF8,修改后之前的中文全乱码了....

查看全部评分


结帖率:70% (7/10)

签到天数: 6 天

 楼主| 发表于 3 天前 | 显示全部楼层   福建省泉州市
hbtudou 发表于 2026-8-3 19:59
支持加密读写吗?

暂不支持 你说的是 打开加密文件() 的这个加密读写吗 这个或许对你有所帮助 加密配置模块.e (14.81 KB, 下载次数: 1)
回复 支持 反对

使用道具 举报

结帖率:90% (9/10)

签到天数: 4 天

发表于 3 天前 | 显示全部楼层   广东省佛山市
感谢大神分享~!
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)

签到天数: 5 天

发表于 3 天前 | 显示全部楼层   广东省汕头市
感谢大神分享~!
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 4 天前 | 显示全部楼层   湖北省武汉市
支持加密读写吗?
回复 支持 反对

使用道具 举报

签到天数: 5 天

发表于 4 天前 | 显示全部楼层   浙江省杭州市
看看~~~~~~~~~~
回复 支持 反对

使用道具 举报

结帖率:80% (60/75)

签到天数: 5 天

发表于 4 天前 | 显示全部楼层   广东省珠海市
看看~~~~~~~~~~
回复 支持 反对

使用道具 举报

签到天数: 7 天

发表于 4 天前 | 显示全部楼层   山东省青岛市
这工具看着挺方便的,双重选取加实时读取,写配置省时省力啊,有木有人用过给个反馈?
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 5 天前 | 显示全部楼层   江苏省苏州市
进来啊看看。。
回复 支持 反对

使用道具 举报

签到天数: 6 天

发表于 5 天前 | 显示全部楼层   江苏省连云港市

感谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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