wsfda 发表于 2011-5-6 23:25:53

【已解决】代码运行结果多出一个数字3,求解

本帖最后由 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.*", 2)

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

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

love5173 发表于 2011-5-6 23:57:42

本帖最后由 love5173 于 2011-5-7 00:00 编辑

回复 1# wsfda
数组的第一个元素返回的是数组的大小
也就是说你的数组里面有3个元素,过滤掉即可
枚举的时候加一个判断<>$aArray 就好了

netegg 发表于 2011-5-7 01:29:14

return StringSplit(StringTrimRight($sReturn, 1), Chr(28), 2)

wsfda 发表于 2011-5-7 09:01:22

非常感谢两位,谢谢

wsfda 发表于 2011-5-7 09:01:24

非常感谢两位,谢谢

3mile 发表于 2011-5-7 10:33:22

只需要修改4-7行:

Local $string = ""
FOR $i=1 to $Array
      $string& = $Array[$i]& @CRLF
NEXT

wsfda 发表于 2011-5-7 12:08:07

回复 6# 3mile


    简单省事,非常感谢

wsfda 发表于 2011-5-7 12:16:29

本帖最后由 wsfda 于 2011-5-7 12:18 编辑

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

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

love5173 发表于 2011-5-7 12:21:57

转化成二进制再还原一下试试

wsfda 发表于 2011-5-7 13:18:38

回复 9# love5173


    好的,我试试,谢谢你
页: [1]
查看完整版本: 【已解决】代码运行结果多出一个数字3,求解