找回密码
 加入
搜索
查看: 4300|回复: 9

[系统综合] 【已解决】代码运行结果多出一个数字3,求解

  [复制链接]
发表于 2011-5-6 23:25:53 | 显示全部楼层 |阅读模式
本帖最后由 wsfda 于 2011-5-7 18:15 编辑
#include <Array.au3>
$aArray = _GetPSTPath()

$string = ""
FOR $element IN $aArray
        $string = $string & $element & @CRLF
NEXT
Msgbox(0,"For..IN 数组测试","结果: " & @CRLF & $string)
Func _GetPSTPath()
        
    Local $sFolderSubString, $sPath, $asPathSearch, $sReturn
        
    Local $oOutlook = ObjCreate("Outlook.Application")
        
    Local $oNS = $oOutlook.GetNamespace("MAPI")

    If IsObj($oNS) Then
                
        For $objFolder In $oNS.Folders
                        
            $sPath = ""
                        
            For $i = 1 To StringLen($objFolder.StoreID) Step 2
                                
                $sFolderSubString = StringMid($objFolder.StoreID, $i, 2)
                                
                If $sFolderSubString <> "00" Then $sPath &= Chr(Dec($sFolderSubString))
                        
                        Next

            $asPathSearch = StringRegExp($sPath, "(?i)\w(:\\|\\\\)\w.*[pst]", 2)

            If IsArray($asPathSearch) Then $sReturn &= $asPathSearch[0] & Chr(28)
                        
        Next
        
        Return StringSplit(StringTrimRight($sReturn, 1), Chr(28))
                
    Else
                
        SetError(1)
                
        Return 0
                
    EndIf
        
EndFunc
以上代码运行后得出的结果中出现了一个“3” 如下:

请教这个3是怎么回事,不能理解他如何产生的,求教,谢谢各位....

本帖子中包含更多资源

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

×
发表于 2011-5-6 23:57:42 | 显示全部楼层
本帖最后由 love5173 于 2011-5-7 00:00 编辑

回复 1# wsfda
数组的第一个元素返回的是数组的大小
也就是说你的数组里面有3个元素,过滤掉即可
枚举的时候加一个判断<>$aArray[0] 就好了
发表于 2011-5-7 01:29:14 | 显示全部楼层
return StringSplit(StringTrimRight($sReturn, 1), Chr(28), 2)
 楼主| 发表于 2011-5-7 09:01:22 | 显示全部楼层
非常感谢两位,谢谢
 楼主| 发表于 2011-5-7 09:01:24 | 显示全部楼层
非常感谢两位,谢谢
发表于 2011-5-7 10:33:22 | 显示全部楼层
只需要修改4-7行:

Local $string = ""
FOR $i=1 to $Array[0]
        $string& = $Array[$i]& @CRLF
NEXT
 楼主| 发表于 2011-5-7 12:08:07 | 显示全部楼层
回复 6# 3mile


    简单省事,非常感谢
 楼主| 发表于 2011-5-7 12:16:29 | 显示全部楼层
本帖最后由 wsfda 于 2011-5-7 12:18 编辑

再追加一个问题,以上代码中如果outlook的PST文件名字为中文,比如:个人文件夹.pst
那么获取到的就是乱码,如下:

最后一个的真正文件名是    ,个人文件夹(1).pst
是因为正则的问题吗,小弟不太懂正则,请问如何解决是好

本帖子中包含更多资源

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

×
发表于 2011-5-7 12:21:57 | 显示全部楼层
转化成二进制再还原一下试试
 楼主| 发表于 2011-5-7 13:18:38 | 显示全部楼层
回复 9# love5173


    好的,我试试,谢谢你
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-2 06:37 , Processed in 0.082863 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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