iT邦幫忙

0

VBScript Array維度可否設定為"變數"的問題

  • 分享至 

  • xImage

請問:
VBScript Array維度可否設定為"變數"的問題??
一般定義維度
Dim AAA(5)
ps: 5為常數

但好像無法
Dim AAA(UBound(arr))
ps: arr本身為維度=5的矩陣

請問有相關的解決經驗跟解答嗎?
謝謝。

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
aaron3399
iT邦好手 1 級 ‧ 2023-01-27 00:30:50
最佳解答

請搜尋一下VBS動態陣列.......應該會有你要的答案哦~

看更多先前的回應...收起先前的回應...
jacky33 iT邦新手 5 級 ‧ 2023-01-27 01:32:16 檢舉

謝謝您的回覆
應該是說我知道我有一個Array
AAA = Array("a","b",c")
在這之前我必須先Dim AAA(2)
有沒有辦法不要手動輸入數字"2"?
謝謝。

aaron3399 iT邦好手 1 級 ‧ 2023-01-27 01:48:07 檢舉

你想要做的就是動態陣列
應該是說你去搜尋vbs動態陣列,了解一下動態陣列的正確用法之後
就會知道輸入2不是必須的阿..........

很多資料可以參考看看.....
ASP 動態增加陣列長度
http://smlboby.blogspot.com/2010/05/asp.html
VBScript - 動態 Array 實現方法大全!
https://www.zendei.com/article/97862.html

blanksoul12 iT邦研究生 5 級 ‧ 2023-01-27 08:54:02 檢舉

AAA = Array("a","b",c") 就這樣,不用 dim AAA 已經是 array
dim 一般是會準備 redim 的吧

jacky33 iT邦新手 5 級 ‧ 2023-01-27 11:44:42 檢舉

我再去理解一下。謝謝您。

jacky33 iT邦新手 5 級 ‧ 2023-01-27 12:31:51 檢舉

其實我真正遇到的問題如下:比如:AFile裡有超過兩個以上的檔案。
原本Code如下。
'========================
intCount=0
For Each strFile in AFile
intCount = intCount+1
.
.
Dim AA()
.
AA = array("BB")
a= UBound(AA)
ReDim AA(a)
.
.
Next
'==========================
以上Code在執行For Each第一圈時不會有問題,但是第二圈時會出現Script Error:Description:類型不符
Line(55):"Dim Dim AA()"
Cause: Microsoft VBScript:執行階段錯誤
但是當我改成如下:
'========================
intCount=0
For Each strFile in AFile
intCount = intCount+1
.
.
If intCount <= 0 Then
Dim AA()
Else
ReDim AA(a)
End If

AA = array("BB")
a= UBound(AA)
ReDim AA(a)
.
.
Next
'==========================
執行幾圈For Each都沒有問題,結果是成功的。看起來很像是For Each內的Dim/Redim問題。
請問您知道是什麼原因嗎?怎樣改會比較好呢?謝謝。

aaron3399 iT邦好手 1 級 ‧ 2023-01-27 16:53:08 檢舉

話說...你的DIM宣告陣列為何要放在for迴圈面裡面呢?XD
這樣不會重複宣告嗎

jacky33 iT邦新手 5 級 ‧ 2023-01-27 21:23:41 檢舉

所以問題是因為重複宣告嗎? 那我再改一下。感謝。

blanksoul12 iT邦研究生 5 級 ‧ 2023-01-30 11:40:49 檢舉

dim 一般放最頂便可以了

jacky33 iT邦新手 5 級 ‧ 2023-01-30 15:02:17 檢舉

謝謝。照您所說的,我把Dim放在最top,剩下用ReDim(UBound(...))方式重新更改了我所有code.感覺比較合理一點了,也少了很多錯。

jacky33 iT邦新手 5 級 ‧ 2023-01-30 15:21:05 檢舉

我再請教一個問題。當我有個For Each加上裡面有個判斷式If如下:
ReDim AluViasFoundGround(1)
c = 0
For Each AluViasGnd In AluViasFound
If AluViasGnd <> AluViasFoundSignal(0) Then
AluViasFoundGround(c) = AluViasGnd
c = c + 1
End If
Next
當滿足條件If時,AluViasGnd值才會輸入AluViasFoundGround。
今天我恰巧知道AluViasFoundGround維度所以可以先在上面ReDim AluViasFoundGround(1)。請問要是我無法提前知道AluViasFoundGround維度,這種情況該怎麼寫?Thanks...

aaron3399 iT邦好手 1 級 ‧ 2023-01-30 17:53:39 檢舉

你好像又鑽進原來的問題了耶.....
再貼一次....範例,可能需要思考比較一下跟你寫的結構差別在哪

VBScript - 動態 Array 實現方法大全!
https://www.zendei.com/article/97862.html
https://ithelp.ithome.com.tw/upload/images/20230130/20061361L5zI8suTlu.png

jacky33 iT邦新手 5 級 ‧ 2023-01-31 09:53:25 檢舉

原來如此。可以用迴圈方式即時改變維度。不需要在外固定維度。感謝。

我要發表回答

立即登入回答