微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

vb6备忘录4 数组

数组是内存中连续存放的一组元素。分静态(定长)和动态(变长)数组。

动态数组是在程序运行中可以改变长度的一组元素。


静态数组:

public/private/dim 数组名(下标) as 类型

下标:为整形(integer,可为负),认以0开始。a(10)下载为0到10,故为11个元素。超出范围将产生 越界错误。亦可自定上下界a(3 to 23)

类型:多种,可基础类型,自定义,对象等

Dim a(-3 To 10) As Integer ’14个元素,,10-(-3)+1=14
Dim i As Integer
For i = -3 To 10
a(i) = i
List1.AddItem a(i)
Next i



动态数组

redim preserve 数组名(下标) as 类型

preserve表示改变长度时,原元素值不变

定义动态数组,两种方式:

一、redim a(3) as integer

redim a(4) as integer

二、dim a( ) as integer ‘如果是二维:dim a(,) as string,同理三维 dim a(,) as long

redim a(4) as integer

动态数组只能修改最后一维,可变大也可变小;可改变上界或下界,但如果有preserve时只能修改上界。

动态数组可改变数组类型,只能是variant类型时,且能够由Variant转换而来,并且不能有preserve关键字

所以有preserve时,只能修改上界

初始化: 数值初始为0,字串初始为空串(“”),定长字串为0填充,Variant为Empty,对象为nothing

动态数组中插入或删除一个数组:

插入: 先增加长度,其后值向后移动,插入点写入值

删除: 先向删除点移动数据,最后Redim减少长度



选择排序法:从第一始,与后面所有元素比较,判断大(小)则向前移;第二次从第二始,再与后面所有元素比较,如此得到排列。

冒泡法: 共循环N-1次,每次两两比较,把大的向前移,第一次后,最小的就在最后;第二次循环次小的在次后,如此得到排序。


记录数组:每个元素是自定义类型,从而组成一个数组。在实际应用中常 见



控件数组,同类型控件为元素组成的数组。

创建:1、复制粘贴法 对已有控件复制,然后粘贴,会提示是否创建控件数组,点击是

2、同名法 对多个同类控件,逐一选中,分别设置同一样名字,会提示是否创建控件数组,点击是

以上创建类同于静态数组,在程序运行前创建。

下面是动态创建,即程序运行后才创建控件数组


难点:VB坐标系

一般屏幕以像素为单位,如1024X860,它的单位是像素,坐标原点在屏幕左上角,水平向右为X轴为正,垂直向下为Y轴为正。

同样,VB也是按上面方式用的坐标,但使用的单位认为缇,缇比像素更小: 1像素=15缇。

这个单位(像素或缇)是可以用户自己来定义的。怎么定义?

scalemode scale就是标尺,刻度的意思,这个就是来设置刻度的模式,有8种。

form1.scalemode=1 '设置为缇为单位(twip)

form1.scalemode=3 '设置为像素为单位(pixel)

其值0时,就是用户定义的刻度,因此要自己定义时须设置为0,同时它还有一功能就是改变坐标系的作用。

自己定义坐标系,有两种方法

1、scale方法

form1.scalemode=0 ' 第一步须指明下面是用户自定义的坐标

form1.scalemode=3 ' 第二步指明自定义坐标要使用的单位

form1.scale (0,0)-(640,480) ' 第三步指明工作区的大小(左上角到右下角),这样就是一个640X480的工作区

可以看出上面的坐标方向没变,向右X轴为正,向下Y轴为正。再变一下,换成这一句

form1.scale (-320,240)-(320,-240) ' 大小没变仍然是640X480

但方向注意 下,X轴-320到320,由负到正,说明水平向右是正

Y轴240到-240,由正到负,说明垂直向下是负了,即向上才是正。

而且还可以推出,这个坐标的中心就在工作区的中心(可在图上画下)

2、设置scaleleft,scaletop来改变坐标系

object.scalewidth=640 ' 对象工作区水平宽度为640 ,这里只要一设置,scalemode就会自动变成0(用户模式)

object.scaleheight=480 ' 对象的工作区垂直高度为480

object.scaleleft=-320

object.scaletop=240 ' 这样左上角坐标就不是(0,0)了,而是(-320,240)

通过 纵横比: scaleheight / scalewidth 的值可以按比例放大和缩小相关的图形。


Option Base 0 | 1定义数组起点(下界),认是0,可以用此句强行指定是0还是1


Array(list) 数组函数,由它来构造一个函数。list为元素值的列表 ,注意这些值,能够被variant接收,否则出错

dim a as variant ' 必须是variant,否则出错,原因后述

a=Array(23,33,78,98)

msgBox a(3)

原因:虽然variant与variant数组有区别,但它们的访问方式是一样的,所以可以用variant来替代数组。用其它就会出错,如Integer会出错。



UBound(数组名,维数) 取数组的上界,维数可省,认为1(第一维),返回值为Long型

LBound(数组名,维数) 。。。。下界,,,,,,,,,,,,,,,,,,,,Long


split( 表达式,分隔符,取元素的限制上界,比较方式) 按照分隔符对表达式进行分割成一个一维的数组,

分隔符:认为一空格“ ”,可省,用户自定义

上界: 限制从表达式中取多少个元素,认为-1,有多少取多少即全取。可指定,如指定为2,即只取0,1两个元素。

比较方式:有四种,1.vboptioncompare用户特指定

2.vbtextcompare 文本方式 (认)

3.vbbinarycompare 二进制方式

4.vbaccesscompare Access数据库方式(仅用于Access)

原文地址:https://www.jb51.cc/vb/259118.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐