您现在的位置是:首页 >

vb编程设计例题100例 vb数组下标

火烧 2022-12-27 20:20:26 1123
v 数组下标 v 数组下标窗体的通用声明处、O tio Ba e 1VB数组下标问题v 数组的下标只能是整数,不管你写什么v 都会尝试把他自动转换为整数,原则是:四舍六入五取整。所以第二个是a 2 ;

vb数组下标  

vb数组下标

窗体的通用声明处、Option Base 1

vb编程设计例题100例 vb数组下标

VB数组下标问题

vb数组的下标只能是整数,不管你写什么vb都会尝试把他自动转换为整数,原则是:四舍六入五取整。
所以第二个是a(2);所以a(1.6)=a(2),而a(2)在循环中多次被赋值,它保留了最后一次的值:a(2.5)=2.5^2=6.25
不管谁写的这段程序,我都必须承认他很有幽默感

vb 数组下标越界

咱分析分析这么几句话。
Do
ReDim Preserve A(S)
A(S) = InputBox("请输入字符串,输入空串时结束", "输入")
S = S + 1
Loop Until A(S - 1) = ""
运行到 ReDim Preserve A(S),数组最大下标是S,假设是5。
运行到A(S) = InputBox("请输入字符串,输入空串时结束", "输入"),这句无关大碍,略。
运行到S = S + 1,注意此S非彼S了,比刚才大了1,按刚才的假设,是6.
如果按你的修改,运行到Loop Until A(S) = "" ,你想想,S大了1是6,所以A(S) 根本没有数据和他对应,A(6)根本就是空的。当然下标越界啦。

使用redim关键字设置动态数组大小
加入
redim arr(1 to year + 1)
arr(1) = corpus / 12 + corpus * rate
动态数组的用法:
组到底应该有多大才合适,有时可能不得而知。所以希望能够在运行时具有改变数组大小的能力。
动态数组就可以在任何时候改变大小。在 Visual Basic 中,动态数组最灵活、最方便,有助于有效管理内存。例如,可短时间使用一个大数组,然后,在不使用这个数组时,将内存空间释放给系统。
如果不用动态数组,就要声明一个数组,它的大小尽可能达到最大,然后再抹去那些不必要的元素。但是,如果过度使用这种方法,会导致内存的操作环境变慢。
要创建动态数组,请按照以下步骤执行:
(如果希望数组为公用数组,则)用 Public 语句声明数组,或者,(如果希望数组为模块级,则)在模块级用 Dim 语句声明数组,或者(如果希望数组为局部数组,则)在过程中用 Static 或 Dim 语句声明数组。给数组附以一个空维数表,这样就将数组声明为动态数组。
Dim DynArray ()
用 ReDim 语句分配实际的元素个数。
ReDim DynArray (X + 1)
ReDim 语句只能出现在过程中。与 Dim 语句、Static 语句不同,ReDim 语句是一个可执行语句,由于这一语句,应用程序在运行时执行一个操作。
ReDim 语句支持这样的语法,它与固定数组中使用的语法相同。对于每一维数,每个 ReDim 语句都能改变元素数目以及上下界。但是,数组的维数不能改变。
ReDim DynArray (4 to 12)
例如,用第一次声明在模块级所建立的动态数组 Matrix1:
Dim Matrix1 () As Integer
然后,在过程中给数组分配空间:
Sub CalcValuesNow ()
.
.
.
ReDim Matrix1 (19, 29)
End Sub
这里的 ReDim 语句给 Matrix 分配一个 20 × 30 的整数矩阵(元素总大小为 600)。还有一个办法,用变量设置动态数组的边界:
ReDim Matrix1 (X, Y)
注意 您可以将字符串赋值给大小可变的字节数组。一个字节数组也可以被赋值给一个可变长的字符串。一定要注意字符串中的字节数会随平台而变化。同一个字符串在 Unicode 平台上的字节数是它在非 Unicode 平台上的两倍。
保留动态数组的内容
每次执行 ReDim 语句时,当前存储在数组中的值都会全部丢失。Visual Basi 重新将数组元素的值置为 Empty(对 Variant 数组)、置为 0(对 Numeric 数组)、置为 零长度字符串(对 String 数组)或者置为 Nothing(对于对象的数组)。
在为新数据准备数组,或者要缩减数组大小以节省内存时,这样做是非常有用的。有时希望改变数组大小又不丢失数组中的数据。使用具有 Preserve 关键字的 ReDim 语句就可做到这点。例如,使用 UBound 函数引用上界,使数组扩大、增加一个元素,而现有元素的值并未丢失:
ReDim Preserve DynArray (UBound (DynArray) + 1)
在用 Preserve 关键字时,只能改变多维数组中最后一维的上界;如果改变了其它维或最后一维的下界,那么运行时就会出错。所以可这样编程:
ReDim Preserve Matrix (10, UBound (Matrix, 2) + 1)
而不可这样编程:
ReDim Preserve Matrix (UBound (Matrix, 1) + 1, 10)

最简单的方法:

Private Sub Form_Load()
Dim a() As String
Open "d:已存.txt" For Binary As #1
a = Split(Input(LOF(1), #1), vbCrlf)
Close #1
End Sub

你的问题的解决方法:

Private Sub Form_Load()
Dim a()
Dim n As Long
Open "d:已存.txt" For Input As #1
Do While (Not EOF(1)) '读取已存.txt里有几行文字
Line Input #1, st
n = n + 1
Loop
Close #1
ReDim a(n - 1) '插入这行!
Open "d:已存.txt" For Input As #1
For i = 0 To n - 1
Line Input #1, a(i)
Next i
Close #1
End Sub

或者:

Private Sub Form_Load()
Dim a() As String
Dim i As Integer
Open "d:已存.txt" For Input As #1
Do Until EOF(1)
ReDim Preserve a(i)
Line Input #1, a(i)
i = i + 1
Loop
Close #1
End Sub

VB数组下标越界

当然会下标越界啦,你的for循环里有一句写的是
If a(i) < a(i + 1) Then
那你试想,当i=5的时候,这句就成了
If a(5) < a(6) Then
开始时你没有给数组元素6赋值,只赋值从0到5号,vb就当成6号没有了,所以就下标越界了。。。
如果我没猜错,你这段程序,本意应该是将数组元素降序排列的吧?

vb 数组下标越界问题

For w= 1 To 12
StrRec = MSComm1.Input
ReceiveArr(w+1) = StrRec(0) '提示数组下标越界
Next

动态数组
在很多情况下,数组的长度事先是无法预测的,而且有时可能需要在程序中改变数组的长度以适应新的情况,因此出现了动态数组。动态数组是在定义数组只指定数组名及其类型,等以后知道数组的长度或需要改变数组长度时再用“ReDim”指定它的长度。

Private Sub Form_Click()Dim a() As IntegerReDim a(10) '重定义动态数组For i = 0 To 9a(i) = iPrint a(i)Next iEnd Sub

VB 没用数组,下标越界

List的Item(好象是listindex)属性就属于控件数组,他的范围是(0~32767)

求vb二维数组下标

是下界吧?
用LBound函数:LBound(array,dim)
其中array是数组名,dim是数组维数
例如:
Public Sub main()
Dim a(1 To 4,6 To 8) As Long
MsgBox LBound(a, 1) '显示1
MsgBox LBound(a, 2) '显示6
MsgBox UBound(a, 1) '显示4
MsgBox UBound(a, 2) '显示8
End Sub

  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码