我想使用包含任意数量的字符串的动态数组。该数组由if ... then
逻辑而不是循环填充。我不断收到Subscript out of range
错误:
Dim Files() As String
If True Then
ReDim Preserve Files(UBound(Files) + 1) ' Throws "Subscript out of range" error
Files(UBound(Files)) = "foo.pdf"
End If
If True Then
ReDim Preserve Files(UBound(Files) + 1)
Files(UBound(Files)) = "bar.txt"
End If
If True Then
ReDim Preserve Files(UBound(Files) + 1)
Files(UBound(Files)) = "baz.jpg"
End If
我有一个这样声明的函数:
Function SendFiles(Files() As String)
我想摆脱此错误,尽可能不使用变体。我可以重写代码,但不能使用循环。
答案 0 :(得分:2)
您的数组没有在开始时进行初始化,因此您无法Redim Preserve
进行未初始化的数组。
如果您希望字符串数组容纳可变数量的项目,可能为零,则可以使用Split
将其初始化为零长度的数组:
Files = Split(vbNullString)
答案 1 :(得分:1)
您还可以分配足够大的数组,然后将其大小调整为使用的大小。这样,您只有1个调整大小。像这样:
<LinearLayout xmlns:materialdesign="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal">
<com.gc.materialdesign.views.ButtonRectangle
android:id="@+id/button"
android:layout_width="104dp"
android:layout_height="match_parent"
android:background="#1E88E5"
android:text="@string/button"/>