pc961913 发表于 2012-12-5 21:51:18

读取INI中数量不确定的记录[已解决]

本帖最后由 pc961913 于 2012-12-6 20:00 编辑

chengji.ini

张三=90
李四=80
王二=50
xx
xxx
xxx
就是ini里的记录数不固定
要求读取记录,并在窗体里生成对应数量的按钮,按钮上显示人名,点击按钮,对话框弹出对应的分数,并判断是否及格
$INIFile = "chengji.ini"
$Values = IniReadSection($INIFile, "CJ")
$MK_Count = $Values
GUICreate("成绩",200,500) ;
Opt("GUICoordMode", 2)
Const $N = 11
Dim $button[$N]
$button_1 = GUICtrlCreateButton("以下是学生列表", 25, 30,150,50)
GUICtrlSetState($button_1, $GUI_DISABLE)
For $Index = 1 To $MK_Count
        $button[$Index] = GUICtrlCreateButton($Values[$Index], -1,0)
        GUICtrlSetFont(-1,18,400,"Arial")
Next
到这一步,按钮是创建了,接下来怎么实现单击按钮,就弹出对应的分数,并判断是否及格?

netegg 发表于 2012-12-5 21:54:01

不太明白,如果只是总量的话, lz看看inireadsection的返回值就行了

user3000 发表于 2012-12-5 22:35:44

可以考虑用LISTVIEW控件吧? 它可以同时显示以分组形式显示人名,成绩.

annybaby 发表于 2012-12-5 22:42:00

楼主的帖子内容与标题不符:既然是一个人对应一个按钮,那么你按钮也会创建,那就不是"不确定"的问题了~~

annybaby 发表于 2012-12-5 23:17:34

回复 1# pc961913
我承认我蛋疼了,用combo写了个~~
Local $names
$INIFile = "chengji.ini"
$Values = IniReadSection($INIFile, "CJ")   
$win=GUICreate("成绩",200,30)
$combo=GUICtrlCreateCombo('',0,0,100,30,3)
$button=GUICtrlCreateButton('查询',120,0,80,20,1)
For $i=1 To $Values
        $names&=$Values[$i]&'|'
Next
GUICtrlSetData($combo,$names,$Values)
GUISetState()

While 1
        $msg=GUIGetMsg()
        Switch $msg
                Case -3
                        Exit
                Case $button
                        $select=GUICtrlRead($combo)
                        For $i=1 To $Values
                                If $Values[$i]=$select Then MsgBox(0,0,$select&'的分数是:'&$Values[$i],0,$Win)
                        Next
        EndSwitch
WEnd

xms77 发表于 2012-12-5 23:21:17

回复 1# pc961913


#include <GUIConstantsEx.au3>
Opt('GUIOnEventMode', 1)
$INIFile = "chengji.ini"
Global $Values = IniReadSection($INIFile, "CJ")
Global $MK_Count = $Values
GUICreate("成绩",200,500) ;
GUISetOnEvent(-3,"_displayScore")
Opt("GUICoordMode", 2)
;Const $N = 11
Global $button[$MK_Count+1]
$button_1 = GUICtrlCreateButton("以下是学生列表", 25, 30,150,50)
GUICtrlSetState($button_1, $GUI_DISABLE)
For $Index = 1 To $MK_Count
      $button[$Index] = GUICtrlCreateButton($Values[$Index], -1,0)
      GUICtrlSetFont(-1,18,400,"Arial")
                GUICtrlSetOnEvent(-1,"_displayScore")
Next
GUISetState(@SW_SHOW)

While 1
        Sleep(2000)
WEnd

Func _displayScore()
        For $i = 1 To $MK_Count
        Switch @GUI_CtrlId
                Case $GUI_EVENT_CLOSE
                        exit
                Case $button[$i]
                        MsgBox(0,"成绩报告",'姓名:'& $Values[$i] & @CRLF & '成绩:' & $Values[$i] & @CRLF & '等级:' & _JudgeScore($Values[$i]))
                       
        EndSwitch
        Next
EndFunc

Func _JudgeScore($iScore)
        If $iScore < 60 Then
                Return "不及格"
        ElseIf $iScore < 80 Then
                Return "及格"
        ElseIf $iScore < 90 Then
                Return "良好"
        Else
                Return "优秀"
        EndIf       
EndFunc

xms77 发表于 2012-12-5 23:24:49

回复 5# annybaby
我比你还蛋疼,我完全按照楼主的要求做了

afan 发表于 2012-12-5 23:53:18

这类帖子很多,至少我都回了N次了……
LZ 是谁用的马甲吧? 在本论坛发的第一贴帖子还算很工整的,关键是还没编辑过。。。

netegg 发表于 2012-12-5 23:56:42

很明显是要类似数据库查询操作

tiger_47 发表于 2012-12-6 08:14:08

xms77 大:
執行至第五行有錯誤發生:
Global $MK_Count = $Values
Global $MK_Count = $Values^ ERROR
該如何處理?
{:1_517:}

annybaby 发表于 2012-12-6 09:06:36

回复 10# tiger_47


    箭头位置已经指明了,很明显,你脚本目录下没有那个ini文件

魔导 发表于 2012-12-6 17:57:14

楼主收一下   就有了
不一定要您的   那样子   大概的功能自己研究一下就可以改成自己用的了
这是A大的码:
Local $IniFile = @ScriptDir & '\顾客.ini'
Local $Str = _
                '[张三]' & @CRLF & _
                '眼霜= 10' & @CRLF & _
                '面膜= 113' & @CRLF & _
                'VIP = 13' & @CRLF & _
                '[李四]' & @CRLF & _
                '口红(活动打折的)= 2' & @CRLF & _
                '小碗(赠送)= 5' & @CRLF & _
                '[王二]' & @CRLF & _
                '指甲刀(把)= 11' & @CRLF & _
                '毛巾(大)= 23' & @CRLF & _
                '毛巾(小)= 50' & @CRLF & _
                '耳朵勺(金)= 11' & @CRLF & _
                '[高大]' & @CRLF & _
                '欠 = 150元'
If Not FileExists($IniFile) Then FileWrite($IniFile, $Str)
Global $aUser = IniReadSectionNames($IniFile), $aiBtn[$aUser + 1]

$Form1 = GUICreate("顾客", 800, 500)
For $i = 1 To $aUser
      $aiBtn[$i] = GUICtrlCreateButton($aUser[$i], 10, $i * 30, 80)
Next
GUISetState()

While 1
      $Msg = GUIGetMsg()
      Switch $Msg
                Case -3
                        Exit
                Case $aiBtn To $aiBtn[$aUser]
                        MsgBox(0, 0, $aUser[$Msg - 2])
      EndSwitch
WEnd

pc961913 发表于 2012-12-6 18:03:44

回复 8# afan
就是自己没琢磨出来才注册发了个帖子

非马甲

谢各位帮忙

xms77 发表于 2012-12-6 19:10:00

回复 10# tiger_47
你没有创建ini文件或者ini文件内容不对,这个$Values数组根本就没有创建,所以出错了。
页: [1]
查看完整版本: 读取INI中数量不确定的记录[已解决]