dnvplj 发表于 2016-12-9 21:08:10

如何读取INI文件里的数值到ListView列表显示

本帖最后由 dnvplj 于 2016-12-11 20:34 编辑

请问各位朋友,如何将INI文件里的数值读取到ListView列表显示(见下图),谢谢了。

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ScreenCapture.au3>
#include <GuiListView.au3>


$Form1 = GUICreate('', 670, 450, -1, -1)
$ListView1 = GUICtrlCreateListView('', 19, 19, 436, 310, $WS_BORDER, _
                BitOR($WS_EX_CLIENTEDGE, $LVS_EX_CHECKBOXES, $LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES))

$Button1 = GUICtrlCreateButton('配置文件', 520, 200, 70, 25)
$Button2 = GUICtrlCreateButton('退    出', 520, 260, 70, 25)

_GUICtrlListView_AddColumn($ListView1, '序号', 50)
_GUICtrlListView_AddColumn($ListView1, '软件名称', 180)
_GUICtrlListView_AddColumn($ListView1, '说明', 200)
GUISetState(@SW_SHOW, $Form1)

Local $nMsg
While 1
        Switch GUIGetMsg()
                Case -3
                        Exit

                Case $Button1
                        _Read()
                       
                Case $Button2
                        Exit
                       
        EndSwitch
WEnd

Func _Read()
       
        Local $IniFile = @ScriptDir & '\Soft.ini'
        Local $aIni = IniReadSectionNames($IniFile)
        If @error Then Exit MsgBox(4096, "", "错误, 读取INI文件失败.")
        Local $ii, $jj, $var
        For $jj = 1 To $aIni
                $var = IniReadSection($IniFile, $aIni[$jj])
                For $ii = 1 To $var
                        Local $iItemIndexes = _GUICtrlListView_AddItem($ListView1, $jj, 2)
                        _GUICtrlListView_AddSubItem($ListView1, $iItemIndexes, $var[$ii], 1, 1)
                        _GUICtrlListView_AddSubItem($ListView1, $iItemIndexes, $var[$ii], 2, 1)
                Next
        Next
EndFunc   ;==>_Read配置文件
1-1.Namesm="珊瑚浏览器"
1-1.Softwa="浏览器\珊瑚浏览器\1.exe"
1-1.Softsm="实用、绿色、安全"


2-1.Namesm="福昕阅读器"
2-1.Namesm="阅读器\福昕阅读器\2.exe"
2-1.Softsm="文档阅读器和打印器"


3-1.Namesm="搜狗输入法"
3-1.Softsm="输入法\搜狗输入法\3.exe"
3-1.Softsm="爱不释手的输入法"

q410225 发表于 2016-12-9 22:53:48

最后三个_GUICtrlListView_AddSubItem删除,内循环也删除,用代替GUICtrlCreateListViewItem($jj&"|"&$var&"|"&$var,$ListView1)

dnvplj 发表于 2016-12-10 10:11:46

本帖最后由 dnvplj 于 2016-12-10 10:14 编辑

回复 2# q410225

q410225朋友您好,感谢你的回复,配置文件里的“双引号”保留,界面显示的“双引号”能去掉吗(如下图)?

q410225 发表于 2016-12-10 10:25:05

本帖最后由 q410225 于 2016-12-10 16:36 编辑

回复 3# dnvplj

把ini里的双引号去掉不就行了吗

要不然用

StringReplace(chr(34)&"福昕阅读器"&chr(34),'"',"")

StringSplit(chr(34)&"福昕阅读器"&chr(34),'"');//$aArray

gz982503@163.co 发表于 2016-12-10 10:29:10

留下脚印,之后学习学习

chzj589 发表于 2016-12-10 13:50:15

本帖最后由 chzj589 于 2016-12-10 16:22 编辑

请问各位朋友,如何将INI文件里的数值读取到ListView列表显示(见下图),谢谢了。

配置文件
dnvplj 发表于 2016-12-9 21:08 http://www.autoitx.com/images/common/back.gif

在写安装器吧,搜索相关的软件安装,查看配置文件的写法,用法。



是这效果吗?

dnvplj 发表于 2016-12-11 20:13:06

本帖最后由 dnvplj 于 2016-12-11 20:14 编辑

回复 4# q410225

请问朋友:如果增加多个不确定的“关键字”如何处理?
1-1.Namesm="珊瑚浏览器"
1-1.Softwa="浏览器\珊瑚浏览器\1.exe"
1-1.Softsm="实用、绿色、安全"

1-2.Namesm="腾讯QQ"
1-2.Softwa="聊天工具\腾讯QQ\1.exe"
1-2.Softsm="实用、绿色、安全"


2-1.Namesm="福昕阅读器"
2-1.Namesm="阅读器\福昕阅读器\2.exe"
2-1.Softsm="文档阅读器和打印器"


3-1.Namesm="搜狗输入法"
3-1.Softsm="输入法\搜狗输入法\3.exe"
3-1.Softsm="爱不释手的输入法"

3-2.Namesm="五笔输入法"
3-2.Softsm="输入法\五笔输入法\3.exe"
3-2.Softsm="老款的输入法"

3-3.Namesm="迅雷急速版"
3-3.Softsm="网络下载\迅雷急速版\3.exe"
3-3.Softsm="常用下载工具"

chzj589 发表于 2016-12-11 20:53:41

dnvplj 发表于 2016-12-11 21:20:41

回复 8# chzj589
朋友,PS的吧,怎么没有代码?

chzj589 发表于 2016-12-12 08:30:49

回复chzj589
朋友,PS的吧,怎么没有代码?
dnvplj 发表于 2016-12-11 21:20 http://www.autoitx.com/images/common/back.gif
你说是吗?



代码在一楼,读取修改一下

dnvplj 发表于 2016-12-12 08:44:01

回复 10# chzj589
朋友对不起,是我错怪你了,是真的,担按7楼的配置文件只能读出3行。

chzj589 发表于 2016-12-12 08:44:04

回复q410225

请问朋友:如果增加多个不确定的“关键字”如何处理?
dnvplj 发表于 2016-12-11 20:13 http://www.autoitx.com/images/common/back.gif

这样的配置文件INI是读取不出来的

1-1.Namesm="珊瑚浏览器"
1-1.Softwa="浏览器\珊瑚浏览器\1.exe"
1-1.Softsm="实用、绿色、安全"

1-2.Namesm="腾讯QQ"
1-2.Softwa="聊天工具\腾讯QQ\1.exe"
1-2.Softsm="实用、绿色、安全"


2-1.Namesm="福昕阅读器"
2-1.Namesm="阅读器\福昕阅读器\2.exe"
2-1.Softsm="文档阅读器和打印器"


3-1.Namesm="搜狗输入法"
3-1.Softsm="输入法\搜狗输入法\3.exe"
3-1.Softsm="爱不释手的输入法"

3-2.Namesm="五笔输入法"
3-2.Softsm="输入法\五笔输入法\3.exe"
3-2.Softsm="老款的输入法"

3-3.Namesm="迅雷急速版"
3-3.Softsm="网络下载\迅雷急速版\3.exe"
3-3.Softsm="常用下载工具"
要修改一下

chzj589 发表于 2016-12-12 08:46:25

回复 11# dnvplj


1-1.Namesm="珊瑚浏览器"
1-1.Softwa="浏览器\珊瑚浏览器\1.exe"
1-1.Softsm="实用、绿色、安全"

1-2.Namesm="腾讯QQ"
1-2.Softwa="聊天工具\腾讯QQ\1.exe"
1-2.Softsm="实用、绿色、安全"


2-1.Namesm="福昕阅读器"
2-1.Namesm="阅读器\福昕阅读器\2.exe"
2-1.Softsm="文档阅读器和打印器"


3-1.Namesm="搜狗输入法"
3-1.Softsm="输入法\搜狗输入法\3.exe"
3-1.Softsm="爱不释手的输入法"

3-2.Namesm="五笔输入法"
3-2.Softsm="输入法\五笔输入法\3.exe"
3-2.Softsm="老款的输入法"

3-3.Namesm="迅雷急速版"
3-3.Softsm="网络下载\迅雷急速版\3.exe"
3-3.Softsm="常用下载工具"

dnvplj 发表于 2016-12-12 09:14:36

本帖最后由 dnvplj 于 2016-12-12 09:19 编辑

能上个代码吗?很难吗?

chzj589 发表于 2016-12-12 10:05:35

本帖最后由 chzj589 于 2016-12-12 10:09 编辑

能上个代码吗?很难吗?
dnvplj 发表于 2016-12-12 09:14 http://www.autoitx.com/images/common/back.gif
你说呢?
多看帮助文件,了解GUICtrlCreateListView控件的使用
_GUICtrlListView_AddSubItem
添加列表视图子项.


#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiListView.au3>

Example()

Func Example()
    Local $hImage, $idListview

    ; 创建 GUI
    GUICreate("添加列表视图子项", 400, 300)
    $idListview = GUICtrlCreateListView("", 2, 2, 394, 268, -1, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
    GUISetState(@SW_SHOW)

    ; 加载图像
    $hImage = _GUIImageList_Create()
    _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap(GUICtrlGetHandle($idListview), 0xFF0000, 16, 16))
    _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap(GUICtrlGetHandle($idListview), 0x00FF00, 16, 16))
    _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap(GUICtrlGetHandle($idListview), 0x0000FF, 16, 16))
    _GUICtrlListView_SetImageList($idListview, $hImage, 1)

    ; 添加列
    _GUICtrlListView_InsertColumn($idListview, 0, "列 1", 100)
    _GUICtrlListView_InsertColumn($idListview, 1, "列 2", 100)
    _GUICtrlListView_InsertColumn($idListview, 2, "列 3", 100)

    ; 添加项目
    _GUICtrlListView_AddItem($idListview, "行 1: 列 1", 0)
    _GUICtrlListView_AddSubItem($idListview, 0, "行 1: 列 2", 1, 1)
    _GUICtrlListView_AddSubItem($idListview, 0, "行 1: 列 3", 2, 2)
    _GUICtrlListView_AddItem($idListview, "行 2: 列 1", 1)
    _GUICtrlListView_AddSubItem($idListview, 1, "行 2: 列 2", 1, 2)
    _GUICtrlListView_AddItem($idListview, "行 3: 列 1", 2)

    ; 循环到用户退出.
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
EndFunc   ;==>Example
页: [1] 2
查看完整版本: 如何读取INI文件里的数值到ListView列表显示