Scripting Visual Basic脚本动态数组
因此,我有一个vb脚本,它可以扫描RAP(运行广告程序),如果程序没有最后一次运行时间,但该程序的全名被放入一个数组中,那么这个数组会回显到一个消息框中。我初始化数组以存储10个值,但是为了保持消息框干净,我想在找到所有程序后重新分配数组大小(不应超过3个,但谁知道客户端的大小)。但是,我似乎无法调整数组的大小,它会打印一个消息框,其中包含10个数组插槽以及找到的程序Scripting Visual Basic脚本动态数组,scripting,vbscript,Scripting,Vbscript,因此,我有一个vb脚本,它可以扫描RAP(运行广告程序),如果程序没有最后一次运行时间,但该程序的全名被放入一个数组中,那么这个数组会回显到一个消息框中。我初始化数组以存储10个值,但是为了保持消息框干净,我想在找到所有程序后重新分配数组大小(不应超过3个,但谁知道客户端的大小)。但是,我似乎无法调整数组的大小,它会打印一个消息框,其中包含10个数组插槽以及找到的程序 Dim vprglist(10) Dim i Dim strBuf Dim intIndex Set vprogram
Dim vprglist(10)
Dim i
Dim strBuf
Dim intIndex
Set vprograms = oUIResource.GetAvailableApplications
i = 0
For Each vprogram In vprograms
If vprogram.LastRunTime = "" Then
vprglist(i) = vprogram.FullName
i = i + 1
End If
Next
ReDim Preserve vprglist(i)
If vprglist <> Null Then
For intIndex = LBound(vprglist) To UBound(vprglist)
strBuf = strBuf & " - " & vprglist(intIndex) & vbLf
Next
vmsgbox = MsgBox("Do you want to Install(Yes) or Defer(No) the follow software: " & vbLf & strBuf,64+4)
Select Case vmsgbox
Dim vprglist(10)
昏暗的我
暗淡strBuf
Dim intIndex
设置vprograms=oUIResource.GetAvailableApplications
i=0
对于vprograms中的每个vprogram
如果vprogram.LastRunTime=“”,则
vprglist(i)=vprogram.FullName
i=i+1
如果结束
下一个
ReDim保留vprglist(i)
如果vprglist为空,则
对于intIndex=LBound(vprglist)到UBound(vprglist)
strBuf=strBuf&“-”&vprglist(intIndex)&vbLf
下一个
vmsgbox=MsgBox(“是否要安装(是)或延迟(否)以下软件:”&vbLf&strBuf,64+4)
选择案例vmsgbox
您不能对固定大小的数组重新进行尺寸标注(Dim vprglist(10)
)。如果需要动态数组,请定义一个“普通”变量并为其分配一个空数组:
Dim vprglist : vprglist = Array()
或者直接用ReDim
定义它:
ReDim vprglist(-1)
然后可以按如下方式重新对阵列进行尺寸标注:
If vprogram.LastRunTime = "" Then
ReDim Preserve vprglist(UBound(vprglist)+1)
vprglist(UBound(vprglist)) = vprogram.FullName
i = i + 1
End If
ReDim Preserve
会将数组的所有元素复制到一个新数组中,因此它在大规模应用中的性能不会太好。如果性能是一个问题,您最好使用该类:
Dim vprglist : Set vprglist = CreateObject("System.Collections.ArrayList")
...
If vprogram.LastRunTime = "" Then
vprglist.Add vprogram.FullName
i = i + 1
End If
不,这个列表不应该超过10,这是很少见的,谢谢你。