;;;;;;;;; Read testconfig.txt ;;;;;;;;;
$testerread = _IniReadSection_line(@ScriptDir & "\testconfig.txt", '0001')
$tester0=$testerread[0]
$tester1=$testerread[1]
$tester2=$testerread[2]
MsgBox(0,"111",$tester0)
MsgBox(0,"111",$tester1)
MsgBox(0,"111",$tester2)
;;;;;;;;; Read testconfig.txt ;;;;;;;;;
#include-Once
#cs\\\\\\\\\\\\\\\\\\\\\\\\\\\\ #include <_Ini.au3> \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
﹛﹛晤迡掛滲杅踱腔埻秪ㄩ
﹛﹛1ㄛ囀离滲杅勤衾議虳ini恅璃蚕衾晤鎢恀枙黍迡渣昫ㄛ掛踱炵蹈滲杅崝樓湖羲耀宒(32)ㄛ眕淏黍迡﹝
﹛﹛2ㄛ囀离滲杅衄虴杅擂躺衄32767趼睫褫眕掩淏都殿隙ㄛ掛踱炵蹈滲杅拸森癹秶﹝
﹛﹛絞唳掛ㄩv1.2.3.0
﹛﹛滲杅佽隴ㄩ
﹛﹛_IniDelete-----------;植INI賦凳恅璃笢刉壺議跺瑩硉.
﹛﹛_IniRead-------------;植INI賦凳恅璃笢黍議跺瑩硉.
﹛﹛_IniReadSection------;植INI賦凳恅璃笢黍議跺趼僇笢腔垀衄壽瑩趼摯硉.
﹛﹛_IniReadSectionNames-;植INI賦凳恅璃笢黍垀衄趼僇靡.
﹛﹛_IniRenameSection----;笭韜靡INI賦凳恅璃爵醱腔趼僇靡.
﹛﹛_IniRenameKey--------;笭韜靡INI賦凳恅璃爵醱腔壽瑩趼.
﹛﹛_IniWrite------------;迡珨跺瑩硉善INI賦凳恅璃.
﹛﹛_IniWriteSection-----;蔚杅擂迡善INI賦凳恅璃腔珨跺趼僇.
﹛﹛_IniReadSection_str--;植(準)梓袧INI賦凳恅璃笢黍議跺趼僇笢腔垀衄趼睫.
﹛﹛_IniReadSection_line-;植(準)梓袧INI賦凳恅璃笢黍議跺趼僇笢腔俴趼睫揹.
﹛﹛_FileRead------------;蚚硌隅腔FileOpen湖羲耀宒殿隙黍恅璃腔趼睫揹.
﹛﹛_IniDelete_line------;植(準)梓袧INI賦凳恅璃笢刉壺(漪衄)壽瑩趼腔俴.
﹛﹛蛁砩ㄩ
﹛﹛勤衾杻忷腔瑩迵硉ㄛ※abc=123=AAA§ 埻寀奻※abc§茼蜆符峈壽瑩趼ㄛ※123=AAA§峈硉ㄛ
﹛﹛掛砑寞毓眳ㄛ筍橇腕衄奀緊褫夔頗衄※abc=123§峈壽瑩趼ㄛ※AAA§峈硉腔剒ㄗ囀离滲杅岆羶腕恁腔ㄘㄛ
﹛﹛秪森ㄛ涴爵祥秶峈菴珨笱錶ㄛ硐剒蛁砩狟撓萸ㄗ絞ㄛ硐衄1跺脹瘍憩拸剒蛁砩涴虳賸ㄘㄩ
﹛﹛1ㄛ_IniReadSection 涴跺蔚悵厥峈躺巠蚚菴珨笱錶ㄛ※abc§峈壽瑩趼ㄛ※123=AAA§峈硉
﹛﹛2ㄛ_IniDelete﹜_IniRead﹜_IniRenameKey﹜_IniWrite 褫肮奀巠蚚謗笱錶﹝
﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛-- Afan -- http://www.autoitx.com -- 2010-6-28 --載陔衾 2015-06-07
#ce\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
; 滲杅靡:_IniDelete;=============================================================================
; 佽隴:﹛植INI賦凳恅璃笢刉壺議跺杅硉﹝
; 逄楊:﹛_IniDelete('ini恅璃繚噤', '趼僇靡'[, '壽瑩趼'[, 湖羲耀宒]])
; 統杅:﹛褫恁統杅'壽瑩趼'ㄛ猁刉壺腔壽瑩趼ㄛ祥硌隅壽瑩趼麼妏蚚Default壽瑩趼寀淕跺趼僇蔚掩刉壺﹝
; 殿隙硉:傖髡: 殿隙1﹝
;﹛﹛﹛﹛囮啖: 殿隙0﹝甜扢离 @Error 峈眕狟硉ㄩ
;﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛@Error=1 恅璃祥湔婓˙
;﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛@Error=2 趼僇祥湔婓˙
;﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛@Error=3 壽瑩趼祥湔婓
;﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛@Error=4 恅璃撿衄硐黍扽俶麼氪拸楊迡杅擂扢离﹝
;==========================================================================================start
Func _IniDelete($iFile, $Section, $key = '', $mode = 0)
If Not FileExists($iFile) Then Return SetError(1, 0, 0)
Local $s_File = _FileRead($iFile, $mode)
Local $_Section = StringRegExpReplace($Section, '^\h*(.+?)\h*$', '$1')
Local $_key = StringRegExpReplace($key, '^\h*(.+?)\h*$', '$1')
$_Section = StringRegExpReplace($_Section, '(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)', '\\$1')
$_Section = '\[\h*' & $_Section & '\h*\]'
$_key = StringRegExpReplace($_key, '(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\|\=)', '\\$1')
If Not StringRegExp(@CRLF & $s_File, '\r?\n\h*' & $_Section & '\s*') Then Return SetError(2, 0, 0)
If $key <> '' And $key <> Default Then
Local $vr = _IniRead($iFile, $Section, $key, @LF, $mode)
If $vr = @LF Then Return SetError(3, 0, 0)
Local $s_data = StringRegExpReplace(@CRLF & $s_File & @CRLF, '(?si)(.*?\r?\n\h*' & $_Section & '\h*\r?\n.*?)(\h*' & $_key & '\h*\=.*?\r?\n)(.*)', '$1$3')
Else
Local $s_data = StringRegExpReplace(@CRLF & $s_File & @CRLF & '[', '(?si)(.*?\r?\n)(\h*' & $_Section & '.*?)(\r?\n\h*\[.*)', '$1$3')
EndIf
$s_data = StringTrimLeft($s_data, 2)
$s_data = StringTrimRight($s_data, 3)
Local $FO = FileOpen($iFile, $mode + 2)
Local $Write = FileWrite($FO, $s_data)
FileClose($FO)
If $Write = 0 Then Return SetError(4, 0, 0)
Return 1
EndFunc ;==>_IniDelete
; 滲杅靡:_IniRead;=============================================================================
; 佽隴:﹛植INI賦凳恅璃笢黍議跺杅硉﹝
; 逄楊:﹛_IniRead('ini恅璃繚噤', '趼僇靡', '壽瑩趼'[, '蘇硉'[, 湖羲耀宒]])
; 殿隙硉:傖髡: 殿隙硌隅腔壽瑩趼腔硉﹝
;﹛﹛﹛﹛囮啖: 殿隙蘇硉﹝INI恅璃麼趼僇祥湔婓麼黍渣昫 蔚扢离 @error=1˙@Error=2 壽瑩趼祥湔婓﹝
;==========================================================================================start
Func _IniRead($iFile, $Section, $key, $default = '', $mode = 0)
Local $s_Sec = _IniReadSection_str($iFile, $Section, $mode)
If @error = 1 Then Return SetError(1, 0, $default)
If @error = 2 Then Return SetError(3, 0, $default)
Local $_key = StringRegExpReplace($key, '^\h*|\h*$', '')
$_key = StringRegExpReplace($_key, '(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\|\=)', '\\$1')
Local $aVal = StringRegExp($s_Sec, '(?mi)^\h*' & $_key & '\h*\=\h*(\V*?)\s*$', 1)
If @error Then Return SetError(2, 0, $default)
Return $aVal[0]
EndFunc ;==>_IniRead
; 滲杅靡:_IniReadSection;======================================================================
; 佽隴:﹛植INI賦凳恅璃笢黍議跺趼僇笢腔垀衄壽瑩趼麼硉﹝
;﹛﹛﹛﹛埻IniReadSection滲杅硐衄婓趼僇笢腔32767趼睫褫眕掩淏都殿隙,掛滲杅拸森癹秶(場笪婓衾森)﹝
;﹛﹛﹛﹛埻IniReadSection滲杅郣善議虳恅璃杻忷腔隙陬摯遙俴郪磁頗礿砦樟哿奧殿隙ㄛ掛滲杅頗俇淕黍堤﹝
;﹛﹛﹛﹛坳迵埻IniReadSection滲杅祥肮ㄩ祥殿隙拸壽瑩趼腔硉;暫拸壽瑩趼衱拸硉硐衄脹瘍腔珩祥掩殿隙﹝
; 逄楊:﹛_IniReadSection('ini恅璃繚噤', '趼僇靡'[, 湖羲耀宒])
; 殿隙硉:傖髡: 殿隙珨跺媼峎杅郪,笢ㄩ啋匼[0][0]=湮苤﹜啋匼[n][0]=壽瑩趼﹜啋匼[n][1]=勤茼腔杅硉﹝
;﹛﹛﹛﹛囮啖: 殿隙0﹝INI恅璃黍渣昫麼趼僇祥湔婓蔚扢离 @error=1˙趼僇囀峈諾蔚扢离 @error=2
;==========================================================================================start
Func _IniReadSection($iFile, $Section, $mode = 0)
Local $s_Sec, $a_1, $ii = 1, $i
$s_Sec = _IniReadSection_str($iFile, $Section, $mode)
If @error Then Return SetError(@error, 0, 0)
$a_1 = StringRegExp($s_Sec, '(?m)^\h*([^=;\s][^=\v]*?)\h*\=\h*(\V*?)\s*$', 3)
If @error Then Return SetError(2, 0, 0)
Local $2_array[UBound($a_1) / 2 + 1][2] = [[UBound($a_1) / 2]]
For $i = 0 To UBound($a_1) - 1 Step 2
$2_array[$ii][0] = $a_1[$i]
$2_array[$ii][1] = $a_1[$i + 1]
$ii += 1
Next
Return $2_array
EndFunc ;==>_IniReadSection
; 滲杅靡:_IniReadSectionNames;===============================================================
; 佽隴:﹛植INI賦凳恅璃笢黍垀衄趼僇腔陓洘﹝
;﹛﹛﹛﹛埻IniReadSectionNames滲杅硐衄32767趼睫衄虴,掛滲杅拸森癹秶﹝
;﹛﹛﹛﹛坳迵埻IniReadSectionNames滲杅祥肮ㄩ
;﹛﹛﹛﹛ - 掛滲杅褫恁寁湖羲耀宒ㄛ眕晞俇淕黍堤垀衄趼僇靡﹝
;﹛﹛﹛﹛ - 祥殿隙俋醱拸"]"婦嬤腔趼僇靡;
;﹛﹛﹛﹛ - 祥殿隙諾腔趼僇靡ㄗ撈"[]"ㄘ;
;﹛﹛﹛﹛ - 褫殿隙蚕"[]"婦嬤腔俴囀垀衄趼睫峈趼僇靡ㄛ褫婦漪[]ㄛ"[a[b]]"殿隙靡峈"a[b]"腔趼僇靡ㄛ
;﹛﹛﹛﹛ 剒黍"a[b]"眳濬婦漪"["麼"]"趼僇腔壽瑩趼麼硉ㄛ剒妏蚚 _IniReadSection() 滲杅﹝
; 逄楊:﹛_IniReadSectionNames('ini恅璃繚噤'[, 湖羲耀宒[, 梓祩]])
; 統杅:﹛褫恁統杅※梓祩§ㄛ梓祩=1奀殿隙腔杅郪0瘍啋匼峈杅郪腔啋匼杅講(蘇)˙梓祩=0奀壽敕0啋匼殿隙杅講
; 殿隙硉:傖髡: 殿隙珨跺漪衄垀衄趼僇靡腔杅郪﹝
;﹛﹛﹛﹛囮啖: 殿隙0﹝INI恅璃黍渣昫麼趼僇祥湔婓蔚扢离 @error=1
;=====================================================================================start
Func _IniReadSectionNames($iFile, $mode = 0, $flag = 1)
Local $s_File = _FileRead($iFile, $mode)
Local $Section = StringRegExp(@LF & $s_File, '\n\h*\[\h*(.*[^\s])\s*\]', 3)
If @error Then Return SetError(1, 0, 0)
If $flag = 0 Then Return $Section
Local $_Section[UBound($Section) + 1], $i
$_Section[0] = UBound($Section)
For $i = 0 To $_Section[0] - 1
$_Section[$i + 1] = $Section[$i]
Next
Return $_Section
EndFunc ;==>_IniReadSectionNames
; 滲杅靡:_IniRenameSection;=====================================================================
; 佽隴:﹛笭韜靡INI賦凳恅璃爵醱腔趼僇﹝
; 逄楊:﹛_IniRenameSection('ini恅璃繚噤', '埻趼僇靡', '陔趼僇靡'[, 湖羲耀宒])
; 殿隙硉:傖髡: 殿隙1﹝
;﹛﹛﹛﹛囮啖: 殿隙0﹝甜扢离 @Error 峈眕狟硉ㄩ
;﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛@Error=1 埻趼僇祥湔婓˙
;﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛@Error=2 陔趼僇眒湔婓˙
;﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛@Error=3 恅璃撿衄硐黍扽俶麼氪拸楊迡杅擂﹝
;==========================================================================================start
Func _IniRenameSection($iFile, $Section, $new_Section, $mode = 0)
Local $s_File = _FileRead($iFile, $mode)
Local $_Section = StringRegExpReplace($Section, '^\h*(.+?)\h*$', '$1')
$_Section = StringRegExpReplace($_Section, '(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)', '\\$1')
$_Section = '\[\h*' & $_Section & '\h*\]'
If Not StringRegExp(@CRLF & $s_File, '\r?\n\h*' & $_Section & '\s*') Then Return SetError(1, 0, 0)
$new_Section = StringRegExpReplace($new_Section, '^\h*(.+?)\h*$', '$1')
$new_Section = StringRegExpReplace($new_Section, '(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)', '\\$1')
If StringRegExp(@CRLF & $s_File, '\r?\n\h*\[\h*' & $new_Section & '\h*\]\s*') Then Return SetError(2, 0, 0)
Local $resdata = StringRegExpReplace(@CRLF & $s_File, '(?si)(.*\r?\n\h*)(' & $_Section & '\h*)(.*)', '${1}[' & $new_Section & ']$3', 1)
$resdata = StringTrimLeft($resdata, 2)
Local $FO = FileOpen($iFile, $mode + 2)
Local $Write = FileWrite($FO, $resdata)
FileClose($FO)
If $Write = 0 Then Return SetError(3, 0, 0)
Return 1
EndFunc ;==>_IniRenameSection
; 滲杅靡:_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, '(?si)(.*\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
; 滲杅靡:_IniWrite;=============================================================================
; 佽隴:﹛迡珨跺硉善INI賦凳恅璃﹝
; 逄楊:﹛_IniWrite('ini恅璃繚噤', '趼僇靡', '壽瑩趼', '硉'[, 湖羲耀宒])
; 殿隙硉:傖髡: 淏都迡殿隙1˙眒湔婓眈肮腔壽瑩趼摯硉寀祥迡ㄛ殿隙2﹝
;﹛﹛﹛﹛囮啖: 殿隙0﹝恅璃撿衄硐黍扽俶麼氪拸楊迡杅擂﹝
;==========================================================================================start
Func _IniWrite($iFile, $Section, $key, $Val, $mode = 0)
Local $_Val = StringRegExpReplace($Val, '^\h*(.+?)\h*$', '$1')
Local $vr = _IniRead($iFile, $Section, $key, @LF, $mode)
Local $Error = @error, $s_data, $Write
If $vr = $_Val Then Return 2
Local $s_File = _FileRead($iFile, $mode)
Local $_Section = StringRegExpReplace($Section, '^\h*(.+?)\h*$', '$1')
Local $_key = StringRegExpReplace($key, '^\h*(.+?)\h*$', '$1')
Local $data = '[' & $_Section & ']' & @CRLF & $_key & '=' & $_Val
Local $FO = FileOpen($iFile, $mode + 2)
$_Section = StringRegExpReplace($_Section, '(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)', '\\$1')
$_Section = '\[\h*' & $_Section & '\h*\]'
$_key = StringRegExpReplace($_key, '(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\|\=)', '\\$1')
$_Val = StringRegExpReplace($_Val, '(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\|\=)', '\\$1')
Switch $Error
Case 0
$s_data = StringRegExpReplace(@CRLF & $s_File & @CRLF & '[', '(?si)(.*?\r?\n\h*' & $_Section & '.*?\r?\n\h*' & $_key & '\h*\=)(\V*)(.*)', '${1}' & $_Val & '$3')
$s_data = StringTrimLeft($s_data, 2)
$s_data = StringTrimRight($s_data, 3)
$Write = FileWrite($FO, $s_data)
Case 1
If $s_File <> '' Then $s_File = StringRegExpReplace($s_File, '(\r?\n)*$', '') & @CRLF
$Write = FileWrite($FO, $s_File & $data & @CRLF)
Case 2, 3
$s_data = StringRegExpReplace(@CRLF & $s_File & @CRLF & '[', '(?si)(.*?\r?\n\h*' & $_Section & '.*?)((?:\r?\n)+)(\h*\[.*)', '$1' & @CRLF & $_key & '=' & $_Val & '$2$3') ;131022党淏*峈+
$s_data = StringTrimLeft($s_data, 2)
$s_data = StringTrimRight($s_data, 3)
$Write = FileWrite($FO, $s_data)
EndSwitch
FileClose($FO)
If $Write = 0 Then Return 0
Return 1
EndFunc ;==>_IniWrite
; 滲杅靡:_IniWriteSection;=====================================================================
; 佽隴:﹛蔚杅擂迡善INI賦凳恅璃腔珨跺趼僇﹝
;﹛﹛﹛﹛掛滲杅婓迡頗珂勤杅擂輛俴淕燴ㄛ壺拸虴腔瑩硉摯嗣豻腔忑帣諾跡ㄛ奧準埻IniWriteSection
;﹛﹛﹛﹛滲杅祥樓煦昴腔窒迡﹝
; 逄楊:﹛_IniWriteSection('ini恅璃繚噤', '趼僇靡', '杅擂'[, '坰竘'[, 湖羲耀宒]])
; 統杅:﹛褫恁統杅'坰竘'ㄛ森統杅躺婓杅擂峈杅郪奀衄虴, 硌隅羲宎迡腔坰竘ㄛ蘇峈 1﹝
; 殿隙硉:傖髡: 殿隙1﹝
;﹛﹛﹛﹛囮啖: 殿隙0﹝甜扢离 @Error 峈眕狟硉ㄩ
;﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛@Error=1 杅郪準2峎麼菴2峎準2˙
;﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛@Error=2 杅擂跡宒渣昫˙
;﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛@Error=3 恅璃撿衄硐黍扽俶麼氪拸楊迡杅擂扢离﹝
; 蛁砩:﹛彆趼僇眒湔婓ㄛ蔚頗珂諾埻瑩硉﹝
;==========================================================================================start
Func _IniWriteSection($iFile, $Section, $data, $index = 1, $mode = 0)
Local $_data, $s_data = '', $s_Section = '', $key, $i, $FO, $Write, $CRLF = @CRLF
If IsArray($data) Then
If UBound($data, 0) <> 2 Or UBound($data, 2) <> 2 Then Return SetError(1, 0, 0)
For $i = $index To UBound($data) - 1
$key = StringRegExpReplace($data[$i][0], '^\h*([^=;\s].+?)\h*$', '$1')
If Not StringRegExp($key, '^\s*$') Then $s_Section &= $key & '=' & StringRegExpReplace($data[$i][1], '^\h*([^=;\s].+?)\h*$', '$1') & @CRLF
Next
If $s_Section = '' Then Return SetError(2, 0, 0)
Else
$_data = StringRegExp(@CRLF & $data & @CRLF, '\n\h*([^=;\s].*?)\h*\=\h*(.*?)\h*(?=\r?\n)', 3)
If @error Then Return SetError(2, 0, 0)
For $i = 0 To UBound($_data) - 1 Step 2
$s_Section &= $_data[$i] & '=' & $_data[$i + 1] & @CRLF
Next
EndIf
Local $s_File = _FileRead($iFile, $mode)
Local $_Section = StringRegExpReplace($Section, '^\h*(.+?)\h*$', '$1')
$Section = '[' & $_Section & ']' & @CRLF
$_Section = StringRegExpReplace($_Section, '(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)', '\\$1')
$_Section = '\[\h*' & $_Section & '\h*\]'
$s_data = StringRegExpReplace(@CRLF & $s_File & @CRLF & '[', '(?si)(.*?\r?\n)\h*' & $_Section & '.*?(\[.*)', '${1}' & $Section & $s_Section & '$2')
If @extended > 0 Then
$s_data = StringTrimLeft($s_data, 2)
$s_data = StringTrimRight($s_data, 3)
Else
If $s_File = '' Then $CRLF = ''
$s_data = StringRegExpReplace($s_File, '(\r?\n)*$', '') & $CRLF & $Section & $s_Section
EndIf
$FO = FileOpen($iFile, $mode + 2)
$Write = FileWrite($FO, $s_data)
FileClose($FO)
If $Write = 0 Then Return SetError(3, 0, 0)
Return 1
EndFunc ;==>_IniWriteSection
; 滲杅靡:_IniReadSection_str;===================================================================
; 佽隴:﹛植(準)梓袧INI賦凳恅璃笢黍議跺趼僇(褫恁笭葩趼僇靡)笢腔垀衄趼睫﹝
; 逄楊:﹛_IniReadSection_str('ini恅璃繚噤', '趼僇靡'[, 湖羲耀宒[, 笭葩梓祩]])
; 統杅:﹛笭葩梓祩 - [褫恁]ㄛ衄虳inf恅璃頗衄笭葩腔趼僇靡ㄛ扢离森梓祩峈1奀褫黍垀衄囀﹝
; 殿隙硉:傖髡: 殿隙趼僇笢腔垀衄趼睫﹝
;﹛﹛﹛﹛囮啖: 殿隙0﹝INI恅璃黍渣昫麼趼僇祥湔婓蔚扢离 @error=1˙趼僇囀峈諾蔚扢离 @error=2
;==========================================================================================start
Func _IniReadSection_str($iFile, $Section, $mode = 0, $nFlag = 0)
Local $s_File = _FileRead($iFile, $mode), $line_all
Local $_Section = StringRegExpReplace($Section, '(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)', '\\$1')
Local $s_Sec = StringRegExp($s_File & @CRLF & '[', '(?si)(?:^|\n)\h*\[\h*' & $_Section & '\h*\]\V*(.*?)\n\h*(?=\[)', 3)
If @error Then Return SetError(1, 0, 0)
$line_all = StringRegExpReplace($s_Sec[0], '^\r?\n|\r$', '')
If $nFlag Then
For $i = 1 To UBound($s_Sec) - 1
$line_all &= StringRegExpReplace($s_Sec[$i], '^\r?\n|\r$', '')
Next
Endif
If Not StringRegExp($line_all, '\V') Then Return SetError(2, 0, 0)
Return $line_all
EndFunc ;==>_IniReadSection_str
; 滲杅靡:_IniReadSection_line;===================================================================
; 佽隴:﹛植(準)梓袧INI賦凳恅璃笢紨俴黍議跺趼僇笢腔趼睫善珨跺1峎杅郪﹝
; 逄楊:﹛_IniReadSection_line('ini恅璃繚噤', '趼僇靡'[, 湖羲耀宒[, 笭葩梓祩]])
; 統杅:﹛笭葩梓祩 - [褫恁]ㄛ衄虳inf恅璃頗衄笭葩腔趼僇靡ㄛ扢离森梓祩峈1奀褫黍垀衄囀﹝
; 殿隙硉:傖髡: 殿隙珨跺1峎杅郪ㄛ藩跺啋匼峈趼僇笢珨俴趼睫﹝
;﹛﹛﹛﹛囮啖: 殿隙0﹝INI恅璃黍渣昫麼趼僇祥湔婓蔚扢离 @error=1˙趼僇囀峈諾蔚扢离 @error=2
; 蛁砩:﹛藩俴趼睫揹腔忑帣諾跡歙頗齬壺˙祥頗殿隙菴珨跺準諾跡趼睫峈※;§腔蛁庋俴﹝
;==========================================================================================start
Func _IniReadSection_line($iFile, $Section, $mode = 0, $nFlag = 0)
Local $s_Sec = _IniReadSection_str($iFile, $Section, $mode, $nFlag)
If @error Then Return SetError(@error, 0, 0)
Local $s_line = StringRegExp($s_Sec, '(?m)^\h*([^;\s]\V*?)\s*$', 3)
If @error Then Return SetError(2, 0, 0)
Return $s_line
EndFunc ;==>_IniReadSection_line
; 滲杅靡:_FileRead;============================================================================
; 佽隴:﹛蚚FileOpen腔湖羲耀宒殿隙黍恅璃腔趼睫揹
;==========================================================================================start
Func _FileRead($iFile, $mode = 0)
Local $o_File = FileOpen($iFile, $mode)
Local $s_File = String(FileRead($o_File))
FileClose($o_File)
Return $s_File
EndFunc ;==>_FileRead
; 滲杅靡:_IniDelete_line;=============================================================================
; 佽隴:﹛植(準)梓袧INI賦凳恅璃笢刉壺(漪衄)壽瑩趼腔俴﹝
; 逄楊:﹛_IniDelete_line('ini恅璃繚噤', '趼僇靡', '壽瑩趼'[, 饜梓祩[, 湖羲耀宒]])
; 統杅:﹛褫恁統杅 饜梓祩ㄛ= 0 漪衄猁刉壺腔壽瑩趼(蘇)˙ = 1 俇淕饜壽瑩趼﹝
; 殿隙硉:傖髡: 殿隙1﹝
;﹛﹛﹛﹛囮啖: 殿隙0﹝甜扢离 @Error 峈眕狟硉ㄩ
;﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛@Error=1 恅璃麼趼僇祥湔婓˙
;﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛@Error=3 跦擂饜梓祩帤饜善壽瑩趼(祥湔婓)˙
;﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛﹛@Error=4 恅璃撿衄硐黍扽俶麼氪拸楊迡杅擂扢离﹝
; 蛁砩:﹛蜆滲杅躺硒俴珨棒刉壺俴ㄛ衄嗣俴(漪衄)壽瑩趼腔俴剒猁刉壺ㄛ褫嗣棒硒俴﹝
;==========================================================================================start
Func _IniDelete_line($iFile, $Section, $key, $flag = 0, $mode = 0)
Local $s_File = _FileRead($iFile, $mode)
Local $_Section = StringRegExpReplace($Section, '^\h*(.+?)\h*$', '$1')
$_Section = StringRegExpReplace($_Section, '(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)', '\\$1')
$_Section = '\[\h*' & $_Section & '\h*\]'
If Not StringRegExp(@CRLF & $s_File, '\r?\n\h*' & $_Section & '\s*') Then Return SetError(1, 0, 0)
Local $_key = StringRegExpReplace($key, '(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\|\=)', '\\$1')
If $flag = 0 Then $_key = '[^\r?\n]*?' & $_key & '.*?'
Local $s_data = StringRegExpReplace(@CRLF & $s_File & @CRLF, '(?si)(.*?\r?\n\h*' & $_Section & '\h*\r?\n(?:\h*[^\[\r\n]*\r?\n)*?)' & $_key & '\r?\n(.*)', '${1}$2')
If @Extended = 0 Then Return SetError(3, 0, 0)
$s_data = StringTrimRight(StringTrimLeft($s_data, 2), 2)
Local $FO = FileOpen($iFile, $mode + 2)
Local $Write = FileWrite($FO, $s_data)
FileClose($FO)
If $Write = 0 Then Return SetError(4, 0, 0)
Return 1
EndFunc ;==>_IniDelete_line