怎么判断一个数组是空数组?dim a() as byte

damomo 2003-07-15 03:20:14
dim a() as byte

在某些条件下我会给a调用函数赋值,我怎么知道a是否变化?
如a不变 我怎么判断?
ubound(a)出错。
...全文
118 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
boywang 2003-07-16
  • 打赏
  • 举报
回复
在调用函数的返回值中说明。
Sean918 2003-07-16
  • 打赏
  • 举报
回复
参考:
http://expert.csdn.net/Expert/topic/1677/1677965.xml?temp=.5621759
damomo 2003-07-16
  • 打赏
  • 举报
回复
up
progame 2003-07-15
  • 打赏
  • 举报
回复
.
专业VB课件这个程序的目的是为了实现得到文本框1中的 数组b 和 内置 数组a 的交集,并以交集元素的个数作为 文本框二 显示可以执行的条件。代码如下: Private Sub Command1_Click() Dim a(0 To 9) As String '定义一个内置的数组 Dim b(0 To 3) As String '文本框中 输入的数组 Dim c() As String '数组a与数组b的交集 Dim m As Byte '定义 数组a的循环变量 Dim n As Byte '定义 数组b的循环变量 Dim i As Byte '定义 交集c的元素数量 a(0) = "01": a(1) = 10: a(2) = 11: a(3) = 35: a(4) = 47: a(5) = 56: a(6) = 67: a(7) = 76: a(8) = 83: a(9) = 99 '给数组a赋值 b(0) = Mid(Text1.Text, 1, 2): b(1) = Mid(Text1.Text, 4, 2): b(2) = Mid(Text1.Text, 7, 3): b(3) = Mid(Text1.Text, 10, 3) '给数组b赋值 For m = 0 To 9 For n = 0 To 3 i = 0 If a(m) = b(n) Then c(i) = a(m): i = i + 1: Exit For End If Next n Next m '循环得到交集 c If UBound(c) + 1 >= 2 Then '获得交集c中元素的个数 Text2.Text = 可以执行 End If End Sub 运行时,当我输入 四个两位 的数据,点击按钮 1 显示提示 下标越界。 请求各位达人帮助,我如何才可以达到自己的目的,最好有完整的代码问题补充: 按照一楼的说法做了,代码如下: Private Sub Command1_Click() Dim a(0 To 9) As String '定义一个内置的数组 Dim b(0 To 3) As String '文本框中 输入的数组 Dim c() As String '数组a与数组b的交集 ReDim Preserve c(i) Dim m As Byte '定义 数组a的循环变量 Dim n As Byte '定义 数组b的循环变量 a(0) = "01": a(1) = 10: a(2) = 11: a(3) = 35: a(4) = 47: a(5) = 56: a(6) = 67: a(7) = 76: a(8) = 83: a(9) = 99 '给数组a赋值 b(0) = Mid(Text1.Text, 1, 2): b(1) = Mid(Text1.Text, 4, 2): b(2) = Mid(Text1.Text, 7, 2): b(3) = Mid(Text1.Text, 10, 2) '给数组b赋值 i = 0 For m = 0 To 9 For n = 0 To 3 If a(m) = b(n) Then ReDim Preserve c(i) c(i) = a(m): i = i + 1: Exit For End If Next n Next m '循环得到交集 c If UBound(c) + 1 >= 2 Then '获得交集c中元素的个数 Text2.Text = "可以执行" End If End Sub
由于使用了一些新的函数,本程序必须在Windows2000下运行。 Option Explicit Public Declare Function GetObjectAPI Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long Public Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long Public Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long Public Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long Public Const RGN_OR = 2 Public Declare Function GetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long Public Declare Function SetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long Public Type BITMAP bmType As Long bmWidth As Long bmHeight As Long bmWidthBytes As Long bmPlanes As Integer bmBitsPixel As Integer bmBits As Long End Type Public Const BITMAP_SIZE = 24 '=Len(BITMAP) Dim bmByte() As Byte Public Declare Function ReleaseCapture Lib "user32" () As Long Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Public Const HTCAPTION = 2 Public Const WM_NCLBUTTONDOWN = &HA1; Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Public Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long Public Const WS_EX_LAYERED = &H80000; Public Const GWL_EXSTYLE = (-20) Public Const LWA_ALPHA = &H2; Public Const LWA_COLORKEY = &H1; Public Sub SetAutoRgn(hForm As Form, Optional transColor As Byte = vbNull) Dim X As Long, Y As Long Dim Rgn1 As Long, Rgn2 As Long Dim SPos As Long, EPos As Long Dim bm As BITMAP Dim hbm As Long Dim Wid As Long, Hgt As Long Dim xoff As Long, yoff As Long '获取窗体背景图片尺寸 hbm = hForm.Picture GetObjectAPI hbm, Len(bm), bm Wid = bm.bmWidth Hgt = bm.bmHeight With hForm .ScaleMode = vbPixels xoff = (.ScaleX(.Width, vbTwips, vbPixels) - .ScaleWidth) / 2 yoff = .ScaleY(.Height, vbTwips, vbPixels) - .ScaleHeight - xoff '改变窗体尺寸 .Width = (Wid + xoff * 2) * Screen.TwipsPerPixelX .Height = (Hgt + xoff + yoff) * Screen.TwipsPerPixelY End With ReDim bmByte(1 To Wid, 1 To Hgt) GetBitmapBits hbm, Wid * Hgt, bmByte(1, 1) '获取图像数组 '如果没有传入transColor参数,则用第一个像素作为透明色 If transColor = vbNull Then transColor = bmByte(1, 1) Rgn1 = CreateRectRgn(0, 0, 0, 0) For Y = 1 To Hgt '逐行扫描 X = 0 Do X = X + 1 While (bmByte(X, Y) = transColor) And (X < Wid) X = X + 1 '跳过是透明色的点 Wend SPos = X While (bmByte(X, Y) <> transColor) And (X < Wid) X = X + 1 '跳过不是透明色的点 Wend EPos = X - 1 '这一段是合并区域 If SPos <= EPos Then Rgn2 = CreateRectRgn(SPos - 1 + xoff, Y - 1 + yoff, EPos + xoff, Y + yoff) CombineRgn Rgn1, Rgn1, Rgn2, RGN_OR DeleteObject Rgn2 End If Loop Until X >= Wid Next Y SetWindowRgn hForm.hwnd, Rgn1, True '设定窗体形状区域 DeleteObject Rgn1 End Sub Option Explicit Private Sub Form_DblClick() Unload Me End Sub Private Sub Form_Load() 'Me.Show Dim t As Single Dim rtn As Long rtn = GetWindowLong(hwnd, GWL_EXSTYLE) rtn = rtn Or WS_EX_LAYERED SetWindowLong hwnd, GWL_EXSTYLE, rtn SetLayeredWindowAttributes hwnd, 0, 192, LWA_ALPHA '半透明 'SetLayeredWindowAttributes hwnd, &H0;, 0, LWA_COLORKEY '去除透明色 t = Timer If Me.Picture <> 0 Then Call SetAutoRgn(Me) ', 0) End If 'MsgBox "运行时间:" & Timer - t & "秒", vbInformation End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = vbLeftButton Then ReleaseCapture SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0& End If End Sub

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧