yamakawa 发表于 2017-7-2 13:13:59

本帖最后由 yamakawa 于 2017-7-2 13:25 编辑

回复 30# chzj589


    好奇怪。。。。。我用的测试完整代码都在21楼

Local $disklist = GUICtrlCreateListView("", 10, 100, 910, 200)

刚刚看了下你的arraydisplay        $partinfo =StringRegExpReplace($partinfo,"                ","      无盘符      ")我的代码里面这行被你删掉了??会导致数组错位

chzj589 发表于 2017-7-2 13:45:19

回复 31# yamakawa
没删,刚发现,Partinfo.txt要补0就可以了
原来:
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
现在:
1:1        C:        30.00GB        17.81GB        Primary        NTFS        WinXP        MBR        1
1:2        D:        88.02GB        72.71GB        Logical        FAT32        0        MBR        0
1:3        E:        89.01GB        64.53GB        Logical        FAT32        0        MBR        0
1:4        F:        91.06GB        39.65GB        Logical        FAT32        0        MBR        0
不知为什么?

yamakawa 发表于 2017-7-2 13:47:49

本帖最后由 yamakawa 于 2017-7-2 14:18 编辑

回复 32# chzj589


    那行代码的作用其实就和补零一样。。。。。。因为我用\s*分割,fat32和mbr中间的空格被当做分隔符了,所以数组错位,

yamakawa 发表于 2017-7-2 13:49:38

本帖最后由 yamakawa 于 2017-7-2 13:58 编辑

回复 33# yamakawa


    如果没删,用arraydisplay,分区标签 会显示 无盘符,你的arraydisplay中明显没有这个数据

我注释那行看看效果



看,这就和你的效果一样了

chzj589 发表于 2017-7-2 18:19:41

回复 34# yamakawa
看看那里不对

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <Misc.au3>
#include <WinAPIFiles.au3>
#include <File.au3>
#include <String.au3>
#include <Date.au3>
#include <GuiListView.au3>
#include <ListViewConstants.au3>
#include <GuiImageList.au3>
#include <StringConstants.au3>

Global $iWidtha = @DesktopWidth
Global $iHeighta = @DesktopHeight
Global $form1
Global $title = "电脑系统安装程序";南充理想
$form1 = GUICreate($title, 520, 497, -1, -1)
$disklist = GUICtrlCreateListView("", 15, 20, 490, 106, $LVS_REPORT, $WS_EX_CLIENTEDGE)

_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)

While 1
        $nmsg = GUIGetMsg()
        Switch $nmsg
                Case $gui_event_close;, $menuitem6
                        GUIDelete()
                        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)
        Local $ii = 0
        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   ;==>fqxx

chenmaochun 发表于 2017-7-2 19:21:40

回复 12# chzj589
分隔符就是几个空格符号,可能换了电脑需要重新复制一下txt文本里面的空格符

chzj589 发表于 2017-7-2 21:06:54

回复 36# chenmaochun
Partinfo.txt是运行程序后自动生成的,要重新修改空白符有点麻烦。

yamakawa 发表于 2017-7-2 21:07:47

本帖最后由 yamakawa 于 2017-7-2 21:39 编辑

回复 35# chzj589


    好奇怪,,我直接复制你的代码,然后运行,一切正常

小bug是,上面你有9个列,下面去掉了$i + 6 所以显示错位,但是cded都读取到了

chenmaochun 发表于 2017-7-2 21:09:32

回复 37# chzj589
不是,你没明白,程序生成的空格符是固定的,你直接复制反编译的代码,里面的空格符不对,重新复制一下文本文件里面的空格符,程序就能正常运行

chenmaochun 发表于 2017-7-2 21:11:04

本帖最后由 chenmaochun 于 2017-7-2 21:17 编辑

回复 38# yamakawa
那个代码不是我写的,没看懂

chzj589 发表于 2017-7-2 21:17:43

回复 39# chenmaochun
是的,我是用反编译的代码运行,
下面这句代码,调整"",都不能起作用               
Local $infoforread = StringSplit($lineforread, "      ")

chenmaochun 发表于 2017-7-2 21:18:52

回复 41# chzj589
尝试用记事本打开那个txt文件,复制第一项和第二项之间的空格,粘贴到程序代码的那个位置,就能正常运行

chzj589 发表于 2017-7-2 21:32:42

回复chzj589
尝试用记事本打开那个txt文件,复制第一项和第二项之间的空格,粘贴到程序代码的那个位置, ...
chenmaochun 发表于 2017-7-2 21:18 http://www.autoitx.com/images/common/back.gif
可以了,谢谢解开疑问

yamakawa 发表于 2017-7-2 22:23:29

本帖最后由 yamakawa 于 2017-7-2 22:38 编辑

回复 37# chzj589


    下载你这个福建,知道为什么我的代码不能正确运行了,原因和楼主说的一样,空格数量不一样。。。你最开始给的那个空格多,这个附件的少,,所以那个正则替换不起作用      $partinfo = StringRegExpReplace($partinfo, "                ", "        无盘符        ")用你新的partinfo.rar中的partinfo.txt,替换我原来代码段中的那句为上面这个,在我电脑顺利通过


修正,,
用这个吧。。。分析你心给的partinfo.txt文件,发现那里其实是两个空格符,所以这个代码比较不容易出错      $partinfo = StringRegExpReplace($partinfo,'\h{2}',' 无标签 ')之所以会出现我这里可以,而你那里不可以,是因为你最开始直接贴txt文件内容,空格符可能自动被论坛系统转意了,所以没正确读取,,这次用'\h{2}',就不会出问题了

chzj589 发表于 2017-7-2 22:46:56

回复 44# yamakawa
谢谢!通过了
页: 1 2 [3] 4
查看完整版本: 由于硬盘损坏,源码丢失,高手能帮忙反编译下吗?