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

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

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


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

; 函数名:_IniRenameKey;========================================================================
; 说明: 重命名INI结构文件里面的关键字。
; 语法: _IniRenameKey('ini文件路径', '字段名', '原关键字', '新关键字'[, '打开模式'])
; 返回值:成功: 返回1。
;    失败: 返回0。并设置 @Error 为以下值:
;              @Error=1 原关键字不存在;
;              @Error=2 新关键字已存在;
;              @Error=3 新关键字为空或仅含有空格或首个非空格字符为“[”
;              @Error=4 文件具有只读属性或者无法写入数据。
;==========================================================================================start
Func _IniRenameKey($iFile, $Section, $Key, $new_key, $mode = 0)
        If StringRegExp($new_key, '^\s*(?:\[.*)?$') Then Return SetError(3, 0, 0)
        _IniRead($iFile, $Section, $Key, @LF, $mode)
        If @error Then Return SetError(1, 0, 0)
        _IniRead($iFile, $Section, $new_key, @LF, $mode)
        If Not @error Then Return SetError(2, 0, 0)
        Local $s_File = _FileRead($iFile, $mode)
        Local $_Section = StringRegExpReplace($Section, '^\h*(.+?)\h*$', '$1')
        $_Section = StringRegExpReplace($_Section, '(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)', '\\$1')
        $_Section = '\[\h*' & $_Section & '\h*\]'
        Local $_key = StringRegExpReplace($Key, '^\h*(.+?)\h*$', '$1')
        $_key = StringRegExpReplace($_key, '(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\|\=)', '\\$1')
        Local $_new_key = StringRegExpReplace($new_key, '^\h*(.+?)\h*$', '$1')
        $_new_key = StringRegExpReplace($_new_key, '(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\|\=)', '\\$1')
        Local $resdata = StringRegExpReplace(@CRLF & $s_File, '(?s)(?i)(.*\r?\n\h*' & $_Section & '.*?\r?\n)\h*(' & $_key & ')\h*(\=.*)', '${1}' & $_new_key & '$3')
        $resdata = StringTrimLeft($resdata, 2)
        Local $FO = FileOpen($iFile, $mode + 2)
        Local $Write = FileWrite($FO, $resdata)
        FileClose($FO)
        If $Write = 0 Then Return SetError(4, 0, 0)
        Return 1
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=o
nnp=p
3=ppp
#include <_Ini.au3>
_IniRenameKey('2.ini', '1', '3', 'nnn',  0)
发表于 2010-7-14 08:54:29 | 显示全部楼层
回复 36# lynfr8
非常感谢!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-18 20:21 , Processed in 0.071423 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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