找回密码
 加入
搜索
查看: 4361|回复: 3

[AU3基础] 【已解决】代码出现问题,不知道哪里出错

[复制链接]
发表于 2015-4-3 07:44:14 | 显示全部楼层 |阅读模式
本帖最后由 chron 于 2015-4-3 21:07 编辑
#include <Constants.au3>
#include <array.au3>
Func _EnumPrinter()
        Local $PrtNameTXT = '', $i = 1, $ReadLocalPrt, $Boolean
        While 1
                $ReadLocalPrt = RegEnumVal('HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices', $i)
                If @error <> 0 Then ExitLoop
                $PrtNameTXT &= $ReadLocalPrt & '|'
                $i += 1
        WEnd
        $PrtArray = StringSplit($PrtNameTXT, '|', 1)
        Local $iIndex = _ArraySearch($PrtArray, 'Canon LBP6200', 0, 0, 1, 1)
        If @error Then
                Return $Boolean = False
                ;MsgBox(4096, "没有找到匹配结果", '搜索完毕,没有结果可显示。')
        Else
                Return $Boolean = True
                ;MsgBox(4096, "搜索成功", '存在!')
        EndIf
EndFunc   ;==>_EnumPrinter
If _EnumPrinter() = True Then 
        MsgBox(4096, "布尔值比较", "True") 
Else 
        MsgBox(4096, "布尔值比较", "False") 
EndIf 
该段代码引用了论坛一位仁兄显示本机打印机的代码,想实现来检测是否已经存在相同打印机的功能,可是出现错误,烦请各位指点!谢谢!先去考科目二,回来再看,内心忐忑的很~~~
1、数组搜索无法做到完整匹配搜索,及关键字为Canon也会成功。
2、返回的布尔值是相反的, if not _EnimPrinter() = True 才是正确的结果,不然刚好相反。
发表于 2015-4-3 09:05:06 | 显示全部楼层
本帖最后由 Huiseyu 于 2015-4-3 09:11 编辑

回复 1# chron
#include <Constants.au3>
#include <array.au3>
Func _EnumPrinter()
        Local $PrtNameTXT = '', $i = 1, $ReadLocalPrt, $Boolean
        While 1
                $ReadLocalPrt = RegEnumVal('HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices', $i)
                If @error <> 0 Then ExitLoop
                $PrtNameTXT &= $ReadLocalPrt & '|'
                $i += 1
        WEnd
        $PrtArray = StringSplit($PrtNameTXT, '|', 1)
        Local $iIndex = _ArraySearch($PrtArray, 'Canon LBP6200', 0, 0, 1, 1)
        If @error = 6 Then
                Return $Boolean = False
                ;MsgBox(4096, "没有找到匹配结果", '搜索完毕,没有结果可显示。')
        Else
                Return $Boolean = True
                ;MsgBox(4096, "搜索成功", '存在!')
        EndIf
EndFunc   ;==>_EnumPrinter
If _EnumPrinter() = True Then
                                                  MsgBox('','',$iIndex) ;Debug
        MsgBox(4096, "布尔值比较", "True")
Else
        MsgBox(4096, "布尔值比较", "False")
EndIf

评分

参与人数 1金钱 +10 收起 理由
chron + 10 谢谢帮忙

查看全部评分

发表于 2015-4-3 11:18:52 | 显示全部楼层
#include <array.au3>
Func _EnumPrinter()
        Local $PrtNameTXT = '', $i = 1, $ReadLocalPrt
        Local $PrtArray, $iIndex,$ERROR
        While 1
                $ReadLocalPrt = RegEnumVal('HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices', $i)
                If @error Then ExitLoop
                $PrtNameTXT &= $ReadLocalPrt & '|'
                $i += 1
        WEnd
        $PrtArray = StringSplit($PrtNameTXT, '|', 1)
        _ArrayDisplay($PrtArray)
        $iIndex = _ArraySearch($PrtArray, 'Canon LBP6200')
        If @error Then
                Return False
        Else
                Return True
        EndIf
EndFunc   ;==>_EnumPrinter
If _EnumPrinter() = True Then
        MsgBox(4096, "布尔值比较", "True")
Else
        MsgBox(4096, "布尔值比较", "False")
EndIf
 楼主| 发表于 2015-4-3 20:43:55 | 显示全部楼层
回复 3# haijie1223


    非常感谢!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-19 06:23 , Processed in 0.078549 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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