2012-11-21 22 views
3

我正在編寫一個腳本,查看IE的當前主頁。如果它不是我們的內聯網,我會抓取該值並將其合併到輔助頁面的註冊表項中。VB腳本寫入MultiString reg鍵

現在我想出瞭如何將它合併到一個數組(假設有一些輔助頁面......如果沒有什麼大不了的話)。我正在運行的是,當我最終合併它時似乎有一個額外的線。這讓我瘋狂。有什麼想法嗎?這是功能。還有更多的腳本,但這是痛苦的部分。由於

Function AppendSecondary(StrComputer) 

objReg.GetstringValue HKEY_CURRENT_USER, strKeyPath, ValueName, strValueMain 
objReg.SetStringValue HKEY_CURRENT_USER, strKeyPath, ValueName, strValueMyMTD 

set ws = WScript.CreateObject("Wscript.Shell") 
strKeyPath=WS.RegRead(strKeyPathPath & ValueNameSecondary) 
if vartype(strKeyPath)= vbArray + vbVariant then 
    arStrings = strKeyPath 
else 
    arStrings = split(strKeyPath,chr(0)) 

    redim preserve arStrings(ubound(arStrings)-3) 
end If 

redim preserve arStrings(ubound(arStrings)+1) 

arstrings(ubound(arStrings))= strvaluemain 

arstrings1 = join(arStrings,VBCRLF) 

arstringsnew = Array(arstrings1) 


objReg.SetMultiStringValue HKEY_CURRENT_USER, strKeyPath, ValueNameSecondary, arstringsnew 



End Function 

回答

0

檢查每個數組的最後一個元素,以確保它不是一個空字符串(「」)或類似CHR(10)或CHR(13)或VBCR,vbLF或vbCRLF非打印字符。

0

有趣的問題。

只是出於好奇,爲什麼你要合併一個數組,然後在數組中重建它呢?

arstrings1 = join(arStrings,VBCRLF) 'merge 
arstringsnew = Array(arstrings1) 'reassemble 

無論如何,我認爲「CHR(0)」創建這個問題,一個簡單的版本太join命令就足夠了您的分裂。

arstrings1 = trim(join(arstrings,vbcrlf)) 

如果不是這樣,一個快速loop'd'loop

dim nArray() : Redim nArray(0) 
for each str in arstrings 
    if len(str)>0 then 
     nArray(ubound(nArray)) = str 
     redim preserve nArray(ubound(nArray)+1) 
    end if 
next 

arrstringsnew = nArray