gogo023 发表于 2009-12-7 20:43:41

怎么样分别读取INI内的数据

本帖最后由 gogo023 于 2009-12-9 18:41 编辑

$IniSectionName = IniReadSectionNames(@ScriptDir & "\FBConfig.ini")
If @error Then
        Exit
Else
        $IniSectionValue = IniReadSection(@ScriptDir & "\FBConfig.ini", $IniSectionName)
        If @error Then
                exit
        Else
                For $Var = 1 To $IniSectionValue
                        $ReturnValue = $IniSectionValue[$Var]
                        $TitalValue= $IniSectionValue[$Var]   
                        $IniFileRead = IniReadSection(@ScriptDir & "\FBConfig.ini", "分辨率设置")                       
                        If @error Then
                                Exit
                        Else
                                For $Z = 1 To $IniFileRead
                                        If $IniFileRead[$Z] = $ReturnValue Then
                                                $Desktop_Refresh= $IniFileRead[$Z]
                                                        MsgBox(0, $TitalValue, $Desktop_Refresh)       
                                        EndIf
                                Next       
                        EndIf
                Next
        EndIf
EndIf        ; FBConfig.ini
[机器范围]
1=2-67
2=68-100

[分辨率设置]
1=1280*768,32,75
2=1024*768,32,75

以上是部分代码,
根据机器名,读取“机器范围”内的编号,再读取“分辨率设置”内的值。
当机器编号小于或等于67时,只读2-67和1028*768,32,75。
当机器编号大于或等于68时,只读68-100和1027*768,32,75。
当然不只这两种,后面还有3=。。。。4=。。。, 以此类推。
这段代码,要怎么改。

水木子 发表于 2009-12-7 22:33:08

本帖最后由 水木子 于 2009-12-7 22:35 编辑

ini配置文件可以这样写更方便。
[机器范围]
1=2-67|1280*768,32,75
2=68-100|1024*768,32,75
3= ……|……
…………
N

gogo023 发表于 2009-12-7 23:09:42

回复 2# 水木子
不方便,我还可以这样改:
1=2-5,5-20,21,67
。。。
。。。

131738 发表于 2009-12-8 14:54:14

回复 3# gogo023 #include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Opt("GUIOnEventMode", 1)
$Form1 = GUICreate("Form1", 322, 197, 192, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
$Input1 = GUICtrlCreateInput("Input1", 72, 40, 121, 21)
$Label1 = GUICtrlCreateLabel("输入机器代码", 72, 16, 76, 17)
$Input2 = GUICtrlCreateInput("Input2", 120, 104, 89, 21)
$Label2 = GUICtrlCreateLabel("分辨率", 72, 104, 40, 17)
$Button = GUICtrlCreateButton("测试按钮", 200, 38)
GUICtrlSetOnEvent(-1, "Software_Sum")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        Sleep(100)
WEnd

func Form1Close()
        Exit
EndFunc       

func Software_Sum()
        Local $Data = GUICtrlRead ( $Input1 )
        If $Data <= 67 Then       
                GUICtrlSetData ( $Input2, IniRead ( @ScriptDir & "\FBConfig.ini", "分辨率设置", "2", "" ) )
        ElseIf $Data >= 68 Then       
                GUICtrlSetData ( $Input2, IniRead ( @ScriptDir & "\FBConfig.ini", "分辨率设置", "1", "" ) )
        EndIf
EndFunc       

gogo023 发表于 2009-12-8 16:04:52

楼上的并不是我想要的结果。

wisly 发表于 2009-12-8 16:37:10

本帖最后由 wisly 于 2009-12-8 16:40 编辑


$aList = IniReadSection('xxx.ini' ,'机器范围')
$iComputer = InputBox('', '请输入机器名')
$Desktop_Refresh = 'not found'
for $i = 1 to $aList
        $aRange = StringRegExp($aList[$i], '\d+-\d+|\d+', 3)
        For $j = 0 to UBound($aRange) - 1
                If StringInStr($aRange[$j], '-') > 0 Then
                        $aMinMax = StringSplit($aRange[$j], '-')
                        If $iComputer < Number($aMinMax) Or $iComputer > Number($aMinMax) Then ContinueLoop
                Else
                        If $iComputer <> $aRange[$j] Then ContinueLoop
                EndIf
                $Desktop_Refresh = IniRead('xxx.ini', '分辨率设置', $aList[$i], 'not found')
                exitloop
        Next
Next
ConsoleWrite('result='&$Desktop_Refresh&@LF)
exit

xz00311 发表于 2009-12-8 23:29:29

这么多老师回答了你的问题了

gogo023 发表于 2009-12-9 18:40:39

多谢6楼的回复。。:face (36):
页: [1]
查看完整版本: 怎么样分别读取INI内的数据