chzj589
发表于 2017-7-1 22:04:29
回复chzj589
你发下那个Partinfo.txt文件
yamakawa 发表于 2017-7-1 20:05 http://www.autoitx.com/images/common/back.gif
用变通方法能实现,但多了十几行代码
chzj589
发表于 2017-7-2 09:08:34
回复 14# yamakawa
还“你发下那个Partinfo.txt文件”,其实也没办法解决
yamakawa
发表于 2017-7-2 10:35:58
回复 17# chzj589
{:face (382):}我不知道有没办法解决,因为我不知道哪个文件内容啊?
稍微看了他的代码,是外部程序生成的那个txt,但是我电脑没有装那个程序,所以才让你上传,
chzj589
发表于 2017-7-2 11:05:08
回复chzj589
我不知道有没办法解决,因为我不知道哪个文件内容啊?
稍微看了他 ...
yamakawa 发表于 2017-7-2 10:35 http://www.autoitx.com/images/common/back.gif
期待你能解决
yamakawa
发表于 2017-7-2 11:33:55
回复 17# chzj589 Func fqxx()
Local $diskinfo = FileOpen(@ScriptDir & "\Partinfo.txt", 0)
Local $partinfo = FileRead($diskinfo)
$partinfo =StringRegExpReplace($partinfo," "," 无盘符 ")
$partinfo =StringRegExpReplace($partinfo,"Primary","主分区")
$partinfo =StringRegExpReplace($partinfo,"Logical","逻辑分区")
Local $aData = StringRegExp($partinfo, '(?mi)^(\d:\d)\s*(\S+)\s*(\S+)\s*(\S+)\s*(\S+)\s*(\S+)\s*(\S+)\s*(\S+)\s*(\d)\s*', 3)
;_ArrayDisplay($aData)
For $i = 0 To UBound($aData) - 1 Step 9
If $aData[$i + 8] = "1" Then
$aData[$i + 8] = "O"
Else
$aData[$i + 8] = "X"
EndIf
GUICtrlCreateListViewItem($aData[$i] & "|" & $aData[$i + 1] & "|" & $aData[$i + 2] & "|" & $aData[$i + 3]& "|" & $aData[$i + 4]& "|" & $aData[$i + 5]& "|" & $aData[$i + 6]& "|" & $aData[$i + 7]& "|" & $aData[$i + 8], $disklist)
Next
EndFunc
楼上的看下,这个代码可以么
yamakawa
发表于 2017-7-2 11:59:17
本帖最后由 yamakawa 于 2017-7-2 12:21 编辑
不好意思,没注意到,他没获取盘符,这样的话,guictrlcreatelistviewitem这行,你去掉$i + 6那段就好了
#include <GuiListView.au3>
;#include <Array.au3>
$Form_main = GUICreate("", 930, 520, -1, -1)
Local $disklist = GUICtrlCreateListView("", 10, 100, 910, 200);, -1, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
_guictrllistview_insertcolumn($disklist, 0, "编号", 40, 2)
_guictrllistview_insertcolumn($disklist, 1, "盘符", 40, 2)
_guictrllistview_insertcolumn($disklist, 2, "总共空间", 60, 2)
_guictrllistview_insertcolumn($disklist, 3, "剩余空间", 60, 2)
_guictrllistview_insertcolumn($disklist, 4, "分区类型", 60, 2)
_guictrllistview_insertcolumn($disklist, 5, "分区格式", 60, 2)
;_guictrllistview_insertcolumn($disklist, 6, " 盘符", 0, 2)
_guictrllistview_insertcolumn($disklist, 7, "引导类型", 60, 2)
_guictrllistview_insertcolumn($disklist, 8, "激活", 50, 2)
fqxx()
GUISetState(@SW_SHOW, $Form_main)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
EndSwitch
WEnd
Func fqxx()
Local $diskinfo = FileOpen(@ScriptDir & "\Partinfo.txt", 0)
Local $partinfo = FileRead($diskinfo)
$partinfo =StringRegExpReplace($partinfo," "," 无盘符 ")
$partinfo =StringRegExpReplace($partinfo,"Primary","主分区")
$partinfo =StringRegExpReplace($partinfo,"Logical","逻辑分区")
Local $aData = StringRegExp($partinfo, '(?mi)^(\d:\d)\s*(\S+)\s*(\S+)\s*(\S+)\s*(\S+)\s*(\S+)\s*(\S+)\s*(\S+)\s*(\d)\s*', 3)
;_ArrayDisplay($aData)
For $i = 0 To UBound($aData) - 1 Step 9
If $aData[$i + 8] = "1" Then
$aData[$i + 8] = "O"
Else
$aData[$i + 8] = "X"
EndIf
GUICtrlCreateListViewItem($aData[$i] & "|" & $aData[$i + 1] & "|" & $aData[$i + 2] & "|" & $aData[$i + 3]& "|" & $aData[$i + 4]& "|" & $aData[$i + 5]& "|" & $aData[$i + 7]& "|" & $aData[$i + 8], $disklist)
Next
EndFunc
chzj589
发表于 2017-7-2 12:25:29
回复 21# yamakawa
可以读,但少了第三行
yamakawa
发表于 2017-7-2 12:36:37
回复 22# chzj589
第三行是什么内容?你发的partionf。txt文件,我这里用这个代码可以正确显示啊
yamakawa
发表于 2017-7-2 12:40:02
chzj589
发表于 2017-7-2 12:44:59
回复 24# yamakawa
怪事,我显示:
yamakawa
发表于 2017-7-2 12:56:11
回复 25# chzj589
。。。这个我在上面说了啊。。因为我最开始没去看他的代码,连盘符都读取了,所以GUICtrlCreateListViewItem($aData[$i] & "|" & $aData[$i + 1] & "|" & $aData[$i + 2] & "|" & $aData[$i + 3]& "|" & $aData[$i + 4]& "|" & $aData[$i + 5]& "|" & $aData[$i + 7]& "|" & $aData[$i + 8], $disklist)这行里面要去掉$i + 6部分
chzj589
发表于 2017-7-2 12:58:12
回复 24# yamakawa
没显示第三行,
1:1 C: 30.00GB 17.81GB Primary NTFS WinXP MBR 1
1:2 D: 88.02GB 72.71GB Logical FAT32 MBR 0
1:3 E: 89.01GB 64.53GB Logical FAT32 MBR 0
1:4 F: 91.06GB 39.65GB Logical FAT32 MBR 0
yamakawa
发表于 2017-7-2 13:01:42
总之,那个正则可以截取那个文本文件的信息,可以先用arraydisplay显示看看。。
怎么显示看你自己安排了。。。
chzj589
发表于 2017-7-2 13:02:34
回复 26# yamakawa
你的列表控件代码是?
$disklist = GUICtrlCreateListView("", 15, 20, 490, 106, $LVS_REPORT, $WS_EX_CLIENTEDGE)
chzj589
发表于 2017-7-2 13:07:13
回复 28# yamakawa
用arraydisplay显示就少第三行,27楼图片就不显示