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
谢谢!通过了