找回密码
 加入
搜索
楼主: 小军218

[系统综合] 那位高手能否写个备忘录小软呢?

 火... [复制链接]
发表于 2010-7-13 00:52:12 | 显示全部楼层
回复 30# lynfr8


    那个 _IniRenameKey 弄好了,帮忙测试下吧,没问题的话就可以入库了,呵呵
  1. #include <_Ini.au3>

  2. ; 函数名:_IniRenameKey;========================================================================
  3. ; 说明: 重命名INI结构文件里面的关键字。
  4. ; 语法: _IniRenameKey('ini文件路径', '字段名', '原关键字', '新关键字'[, '打开模式'])
  5. ; 返回值:成功: 返回1。
  6. ;    失败: 返回0。并设置 @Error 为以下值:
  7. ;              @Error=1 原关键字不存在;
  8. ;              @Error=2 新关键字已存在;
  9. ;              @Error=3 新关键字为空或仅含有空格或首个非空格字符为“[”
  10. ;              @Error=4 文件具有只读属性或者无法写入数据。
  11. ;==========================================================================================start
  12. Func _IniRenameKey($iFile, $Section, $Key, $new_key, $mode = 0)
  13.         If StringRegExp($new_key, '^\s*(?:\[.*)?$') Then Return SetError(3, 0, 0)
  14.         _IniRead($iFile, $Section, $Key, @LF, $mode)
  15.         If @error Then Return SetError(1, 0, 0)
  16.         _IniRead($iFile, $Section, $new_key, @LF, $mode)
  17.         If Not @error Then Return SetError(2, 0, 0)
  18.         Local $s_File = _FileRead($iFile, $mode)
  19.         Local $_Section = StringRegExpReplace($Section, '^\h*(.+?)\h*$', '$1')
  20.         $_Section = StringRegExpReplace($_Section, '(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)', '\\$1')
  21.         $_Section = '\[\h*' & $_Section & '\h*\]'
  22.         Local $_key = StringRegExpReplace($Key, '^\h*(.+?)\h*$', '$1')
  23.         $_key = StringRegExpReplace($_key, '(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\|\=)', '\\$1')
  24.         Local $_new_key = StringRegExpReplace($new_key, '^\h*(.+?)\h*$', '$1')
  25.         $_new_key = StringRegExpReplace($_new_key, '(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\|\=)', '\\$1')
  26.         Local $resdata = StringRegExpReplace(@CRLF & $s_File, '(?s)(?i)(.*\r?\n\h*' & $_Section & '.*?\r?\n)\h*(' & $_key & ')\h*(\=.*)', '${1}' & $_new_key & '$3')
  27.         $resdata = StringTrimLeft($resdata, 2)
  28.         Local $FO = FileOpen($iFile, $mode + 2)
  29.         Local $Write = FileWrite($FO, $resdata)
  30.         FileClose($FO)
  31.         If $Write = 0 Then Return SetError(4, 0, 0)
  32.         Return 1
  33. EndFunc   ;==>_IniRenameKey
复制代码
发表于 2010-7-13 08:04:25 | 显示全部楼层
回复 28# lynfr8

非常感谢!
发表于 2010-7-13 08:11:04 | 显示全部楼层
回复 28# lynfr8
$date = _IniReadSectionNames('setting.ini', 0);读取ini所有‘字段名’

;标志=1时返回的数组0号元素为数组的元素数量(默认);标志=0时关闭0元素返回数量;不过,标志=0时并未关闭0元素返回数量,依然可以返回。

可不可以理解当:$date = _IniReadSectionNames('setting.ini', ,0/1)它们的效果都是一样的,数组下标为0都表示数组元素的个数,只不过他那么规定的,但规定看起来是有毛病的.
发表于 2010-7-13 08:18:13 | 显示全部楼层
学习学习了.
发表于 2010-7-13 10:38:20 | 显示全部楼层
http://www.autoitx.com/thread-16860-1-1.html
已经有高手写出了。。去看看吧。。
发表于 2010-7-13 19:57:26 | 显示全部楼层
回复  lynfr8
$date = _IniReadSectionNames('setting.ini', 0);读取ini所有‘字段名’

;标志=1时返回 ...
newuser 发表于 2010-7-13 08:11


http://www.autoitx.com/forum.php ... 52&fromuid=1003

_IniReadSectionNames($iFile, $mode = 0, $flag = 1)
$mode 你可以理解为fileopen那个打开模式:
  0 = 只读模式(默认)
  1 = 写入模式(附加数据到文件尾部)
  2 = 写入模式(先删除之前的内容)
  8 = 如果目标目录不存在就创建(参考注意).
  16 = 强制使用二进制(字节)模式(参考注意)
  32 = 使用 Unicode UTF16 小编码读写模式,读取不会覆盖存在的BOM.
  64 = 使用 Unicode UTF16 大编码读写模式,读取不会覆盖存在的BOM.
  128 = 使用 Unicode UTF8 (带BOM)读写模式,读取不会覆盖存在的BOM.
  256 = 使用 Unicode UTF8 (无BOM)读写模式.
  16384 = 当打开一个文件读取时(文件没有BOM), 使用完整文件 UTF8 检测. 如果没有使用这一模式,则只会检测文件最前端的 UTF8 标志.
    $flag 的含义才是:
标志=1时返回的数组0号元素为数组的元素数量(默认);标志=0时关闭0元素返回数量;不过,标志=0时并未关闭0元素返回数量,依然可以返回。
发表于 2010-7-14 00:44:41 | 显示全部楼层
回复  lynfr8


    那个 _IniRenameKey 弄好了,帮忙测试下吧,没问题的话就可以入库了,呵呵
afan 发表于 2010-7-13 00:52



    已经测试过了,很完美!!!

2.ini
  1. [1]
  2. 1=o
  3. nnp=p
  4. 3=ppp
复制代码
  1. #include <_Ini.au3>
  2. _IniRenameKey('2.ini', '1', '3', 'nnn',  0)
复制代码
发表于 2010-7-14 08:54:29 | 显示全部楼层
回复 36# lynfr8
非常感谢!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2026-9-21 18:01 , Processed in 0.055627 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

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