找回密码
 加入
搜索
楼主: chenmaochun

[系统综合] 由于硬盘损坏,源码丢失,高手能帮忙反编译下吗?

 火...   [复制链接]
发表于 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,"                ","        无盘符        ")
我的代码里面这行被你删掉了??会导致数组错位
发表于 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
不知为什么?
发表于 2017-7-2 13:47:49 | 显示全部楼层
本帖最后由 yamakawa 于 2017-7-2 14:18 编辑

回复 32# chzj589


    那行代码的作用其实就和补零一样。。。。。。因为我用\s*分割,fat32和mbr中间的空格被当做分隔符了,所以数组错位,
发表于 2017-7-2 13:49:38 | 显示全部楼层
本帖最后由 yamakawa 于 2017-7-2 13:58 编辑

回复 33# yamakawa


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

我注释那行看看效果



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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 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
 楼主| 发表于 2017-7-2 19:21:40 | 显示全部楼层
回复 12# chzj589
分隔符就是几个空格符号,可能换了电脑需要重新复制一下txt文本里面的空格符
发表于 2017-7-2 21:06:54 | 显示全部楼层
回复 36# chenmaochun
Partinfo.txt是运行程序后自动生成的,要重新修改空白符有点麻烦。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2017-7-2 21:07:47 | 显示全部楼层
本帖最后由 yamakawa 于 2017-7-2 21:39 编辑

回复 35# chzj589


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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2017-7-2 21:09:32 | 显示全部楼层
回复 37# chzj589
不是,你没明白,程序生成的空格符是固定的,你直接复制反编译的代码,里面的空格符不对,重新复制一下文本文件里面的空格符,程序就能正常运行
 楼主| 发表于 2017-7-2 21:11:04 | 显示全部楼层
本帖最后由 chenmaochun 于 2017-7-2 21:17 编辑

回复 38# yamakawa
那个代码不是我写的,没看懂
发表于 2017-7-2 21:17:43 | 显示全部楼层
回复 39# chenmaochun
是的,我是用反编译的代码运行,
下面这句代码,调整"  ",都不能起作用               
Local $infoforread = StringSplit($lineforread, "        ")
 楼主| 发表于 2017-7-2 21:18:52 | 显示全部楼层
回复 41# chzj589
尝试用记事本打开那个txt文件,复制第一项和第二项之间的空格,粘贴到程序代码的那个位置,就能正常运行
发表于 2017-7-2 21:32:42 | 显示全部楼层
回复  chzj589
尝试用记事本打开那个txt文件,复制第一项和第二项之间的空格,粘贴到程序代码的那个位置, ...
chenmaochun 发表于 2017-7-2 21:18

可以了,谢谢解开疑问

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 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}',就不会出问题了

评分

参与人数 1金钱 +20 收起 理由
chzj589 + 20 谢谢解答

查看全部评分

发表于 2017-7-2 22:46:56 | 显示全部楼层
回复 44# yamakawa
谢谢!通过了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-4 01:22 , Processed in 0.071531 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表