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楼图片就不显示
页: 1 [2] 3 4
查看完整版本: 由于硬盘损坏,源码丢失,高手能帮忙反编译下吗?