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
动态数组 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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |