【已解决】代码运行结果多出一个数字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-7 00:00 编辑
回复 1# wsfda
数组的第一个元素返回的是数组的大小
也就是说你的数组里面有3个元素,过滤掉即可
枚举的时候加一个判断<>$aArray 就好了 return StringSplit(StringTrimRight($sReturn, 1), Chr(28), 2) 非常感谢两位,谢谢 非常感谢两位,谢谢 只需要修改4-7行:
Local $string = ""
FOR $i=1 to $Array
$string& = $Array[$i]& @CRLF
NEXT 回复 6# 3mile
简单省事,非常感谢 本帖最后由 wsfda 于 2011-5-7 12:18 编辑
再追加一个问题,以上代码中如果outlook的PST文件名字为中文,比如:个人文件夹.pst
那么获取到的就是乱码,如下:
最后一个的真正文件名是 ,个人文件夹(1).pst
是因为正则的问题吗,小弟不太懂正则,请问如何解决是好 转化成二进制再还原一下试试 回复 9# love5173
好的,我试试,谢谢你
页:
[1]