精易论坛

标题: ini配置文件的写入 [打印本页]

作者: oldli    时间: 7 天前
标题: ini配置文件的写入
1、这个ini文件的格式UTF8,我尝试修改了,各种转码转来转去的,还是有问题
2、要求输入配置项的名字,和修改内容直接修改,修改完成的文件编码格式和修改前的要一样
3、用np++之类的打开,要看下修改前和修改后的不可见字符是一样的,尾部的换行可以不用管

PalWorldSettings.rar

1.13 KB, 下载次数: 6

需要修改的ini文件


作者: hongqingfeng    时间: 7 天前
不知是你想的结果,文件格式都是一致的

QQ截图20250629230529.png (272.83 KB, 下载次数: 0)

QQ截图20250629230529.png

作者: hongqingfeng    时间: 7 天前
这是修改后的数据

PalWorldSettings.zip

661 Bytes, 下载次数: 1


作者: oldli    时间: 7 天前
hongqingfeng 发表于 2025-6-29 23:08
这是修改后的数据
  
子程序名返回值类型公开备 注
写基础配置项  
参数名类 型参考可空数组备 注
文件名文本型
项名称文本型
修改内容文本型
变量名类 型静态数组备 注
原文本内容文本型 
新文本内容文本型 
配置项文本内容文本型 
文本长度整数型 
文本起始位置整数型 
起始位置整数型 
结束位置整数型 
文本左边文本型 
文本右边文本型 
有引号逻辑型 
新内容字节集字节集 
文件号整数型 
如果真 (是否为空 (文件名))
文件名 = _启动窗口.编辑框1.内容 + “\Pal\Saved\Config\WindowsServer\PalWorldSettings.ini”
如果真 (取反 (文件是否存在 (文件名)))
返回 ()
原文本内容 = 编码_Utf8到Ansi (读入文件 (文件名))
文本长度 = 文本_取长度 (项名称)
文本起始位置 = 文本_寻找文本 (原文本内容, 项名称, 1, )
如果真 (文本起始位置 ≠ -1)  ' 找到目标配置项了
' 先判断配置项后面的文本有没有带引号号
' 先找到配置项=后面内容的结束位置
如果 (文本_寻找文本 (原文本内容, #引号, 文本起始位置, ) = 文本起始位置 + 文本长度 + 1)
' 调试输出 (“此配置项内容有引号”)
有引号 = 真
起始位置 = 文本_寻找文本 (原文本内容, #引号, 文本起始位置 + 文本长度, )
结束位置 = 文本_寻找文本 (原文本内容, #引号, 起始位置 + 1, )
如果真 (结束位置 = -1)  ' 这是最后一个配置项,以")"结尾的
结束位置 = 文本_寻找文本 (原文本内容, “)”, 文本起始位置 + 文本长度, )

' 调试输出 (“此配置项内容无引号”)
有引号 = 假
起始位置 = 文本_寻找文本 (原文本内容, “=”, 文本起始位置 + 文本长度, )
结束位置 = 文本_寻找文本 (原文本内容, “,”, 文本起始位置 + 文本长度, )
如果真 (结束位置 = -1)  ' 这是最后一个配置项,以")"结尾的
结束位置 = 文本_寻找文本 (原文本内容, “)”, 文本起始位置 + 文本长度, )

配置项文本内容 = 取文本中间 (原文本内容, 起始位置 + 1, 结束位置 - 起始位置 - 1)

文本左边 = 文本_删中间 (原文本内容, 文本起始位置 + 文本长度, 取文本长度 (原文本内容) - 文本起始位置 - 文本长度)
如果 (有引号)
文本右边 = 文本_删中间 (原文本内容, 1, 文本起始位置 + 文本长度 + 2 + 取文本长度 (配置项文本内容))
文本右边 = 文本_删中间 (原文本内容, 1, 文本起始位置 + 文本长度 + 取文本长度 (配置项文本内容))
' 调试输出 (“配置项内容:” + 配置项文本内容)
如果 (有引号)
新文本内容 = 文本左边 + “=”#引号 + 修改内容 + #引号 + 文本右边
新文本内容 = 文本左边 + “=” + 修改内容 + 文本右边
' 调试输出 (新文本内容)
新内容字节集 = 编码_Ansi到Utf8 (新文本内容)
文件号 = 打开文件 (_启动窗口.编辑框1.内容 + “\Pal\Saved\Config\WindowsServer\PalWorldSettings.ini”, #重写, )
如果真 (文件号 ≠ 0)
文件_写出字节集 (文件号, 新内容字节集, 1)
关闭文件 (文件号)
程序_延时 (10, )
处理事件 ()

VX图片_20250629231924.png (309.29 KB, 下载次数: 0)

VX图片_20250629231924.png

作者: oldli    时间: 7 天前
hongqingfeng 发表于 2025-6-29 23:08
这是修改后的数据

不是这个意思,我重新发了详细的内容,您看下,主要是修改里面的“配置项”,我的想法是读入原文本(UTF8编码的),然后转为易语言的Ansi编码,把文本分成2半,中间夹着需要修改的内容,最后再拼接回去,再一起存回原来的文本,但是不知道为什么,存回去之后“=”后面就会多一个不可见的“LF”换行符,我想要存回去之后,和原来的一样“=”后面没有换行符
作者: oldli    时间: 7 天前
不能直接用写配置项()把文本内容直接写回去,如果直接用这个,那修改的内容如果包含中文,ini文件就会出现乱码显示了
作者: 大鹏520    时间: 6 天前
hongqingfeng 发表于 2025-6-29 23:07
不知是你想的结果,文件格式都是一致的

每个子程序区分的这个虚线是哪个插件?
作者: 辽阳小哲    时间: 6 天前
你不想要LF,最笨的方法,就把这段内容中的LF替换掉不就可以了么
作者: oldli    时间: 6 天前
辽阳小哲 发表于 2025-6-30 08:17
你不想要LF,最笨的方法,就把这段内容中的LF替换掉不就可以了么

不知道咋替换,已经用别的方法了,不写入中文就行




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4