读取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
到这一步,按钮是创建了,接下来怎么实现单击按钮,就弹出对应的分数,并判断是否及格? 不太明白,如果只是总量的话, lz看看inireadsection的返回值就行了 可以考虑用LISTVIEW控件吧? 它可以同时显示以分组形式显示人名,成绩. 楼主的帖子内容与标题不符:既然是一个人对应一个按钮,那么你按钮也会创建,那就不是"不确定"的问题了~~ 回复 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
回复 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
回复 5# annybaby
我比你还蛋疼,我完全按照楼主的要求做了 这类帖子很多,至少我都回了N次了……
LZ 是谁用的马甲吧? 在本论坛发的第一贴帖子还算很工整的,关键是还没编辑过。。。 很明显是要类似数据库查询操作 xms77 大:
執行至第五行有錯誤發生:
Global $MK_Count = $Values
Global $MK_Count = $Values^ ERROR
該如何處理?
{:1_517:} 回复 10# tiger_47
箭头位置已经指明了,很明显,你脚本目录下没有那个ini文件 楼主收一下 就有了
不一定要您的 那样子 大概的功能自己研究一下就可以改成自己用的了
这是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 回复 8# afan
就是自己没琢磨出来才注册发了个帖子
非马甲
谢各位帮忙 回复 10# tiger_47
你没有创建ini文件或者ini文件内容不对,这个$Values数组根本就没有创建,所以出错了。
页:
[1]