3

IE の現在のホームページを見るスクリプトを書いています。イントラネット以外の場合は、その値を取得して、セカンダリ ページのレジストリ キーにマージします。

これで、それを配列にマージする方法がわかりました(セカンダリページがいくつかあると仮定します...大したことがない場合)。私が実行しているのは、最終的にマージすると余分な行があるように見えるということです。それは私を夢中にさせています。何かご意見は?これが関数です。スクリプトには他にもありますが、これは苦痛な部分です。ありがとう

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
4

2 に答える 2

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
于 2014-02-24T19:14:21.570 に答える
0

各配列の最後の要素をチェックして、NULL 文字列 ("") や、Chr(10)、Chr(13)、vbCR、vbLF、vbCRLF などの非印刷文字でないことを確認してください。

于 2012-11-22T02:22:38.207 に答える