找回密码
 加入
搜索
查看: 6269|回复: 13

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

  [复制链接]
发表于 2012-12-5 21:51:18 | 显示全部楼层 |阅读模式
本帖最后由 pc961913 于 2012-12-6 20:00 编辑

chengji.ini
[CJ]
张三=90
李四=80
王二=50
xx
xxx
xxx
就是ini里的记录数不固定
要求读取记录,并在窗体里生成对应数量的按钮,按钮上显示人名,点击按钮,对话框弹出对应的分数,并判断是否及格
$INIFile = "chengji.ini"
$Values = IniReadSection($INIFile, "CJ")  
$MK_Count = $Values[0][0] 
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][0], -1,0)
        GUICtrlSetFont(-1,18,400,"Arial")
Next
到这一步,按钮是创建了,接下来怎么实现单击按钮,就弹出对应的分数,并判断是否及格?
发表于 2012-12-5 21:54:01 | 显示全部楼层
不太明白,如果只是总量的话, lz看看inireadsection的返回值就行了
发表于 2012-12-5 22:35:44 | 显示全部楼层
可以考虑用LISTVIEW控件吧? 它可以同时显示以分组形式显示人名,成绩.
发表于 2012-12-5 22:42:00 | 显示全部楼层
楼主的帖子内容与标题不符:既然是一个人对应一个按钮,那么你按钮也会创建,那就不是"不确定"的问题了~~
发表于 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[0][0]
        $names&=$Values[$i][0]&'|'
Next
GUICtrlSetData($combo,$names,$Values[1][0])
GUISetState()

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

评分

参与人数 1金钱 +10 收起 理由
pc961913 + 10 谢谢帮忙

查看全部评分

发表于 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[0][0] 
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][0], -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][0] & @CRLF & '成绩:' & $Values[$i][1] & @CRLF & '等级:' & _JudgeScore($Values[$i][1]))
                        
        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

评分

参与人数 1金钱 +10 收起 理由
pc961913 + 10 厉害、佩服

查看全部评分

发表于 2012-12-5 23:24:49 | 显示全部楼层
回复 5# annybaby
我比你还蛋疼,我完全按照楼主的要求做了
发表于 2012-12-5 23:53:18 | 显示全部楼层
这类帖子很多,至少我都回了N次了……
LZ 是谁用的马甲吧? 在本论坛发的第一贴帖子还算很工整的,关键是还没编辑过。。。
发表于 2012-12-5 23:56:42 | 显示全部楼层
很明显是要类似数据库查询操作
发表于 2012-12-6 08:14:08 | 显示全部楼层
xms77 大:
執行至第五行有錯誤發生:
Global $MK_Count = $Values[0][0]
Global $MK_Count = $Values^ ERROR

該如何處理?
发表于 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[0] + 1]

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

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

评分

参与人数 1金钱 +10 收起 理由
pc961913 + 10 谢谢帮忙

查看全部评分

 楼主| 发表于 2012-12-6 18:03:44 | 显示全部楼层
回复 8# afan
就是自己没琢磨出来才注册发了个帖子

非马甲

谢各位帮忙
发表于 2012-12-6 19:10:00 | 显示全部楼层
回复 10# tiger_47
你没有创建ini文件或者ini文件内容不对,这个$Values数组根本就没有创建,所以出错了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-28 21:19 , Processed in 0.124809 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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