vb6备忘录(4) 数组
来源:互联网 发布:软件助手 编辑:程序博客网 时间:2024/05/17 02:53
数组是内存中连续存放的一组元素。分静态(定长)和动态(变长)数组。
动态数组是在程序运行中可以改变长度的一组元素。
静态数组:
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)
- vb6备忘录(4) 数组
- VB6备忘录(3)控制流程
- vb6备忘录(1):界面
- vb6备忘录(2) 变量
- C++备忘录 动态数组
- Java数组备忘录
- vb6
- vb6
- VB6
- VB6中从内存中(Byte 字节数组)加载图片
- vb6.0 判断数组为空
- VB6.0中数组的定义实测
- VB6 给对象数组如何定义事件?
- 【转】VB6 GDI+ 入门教程(4)—— 文字绘制
- VB6开发领航(一)
- VB时间函数(VB6)
- 动态规划之最大连续子数组(递归备忘录写法)
- R语言学习备忘录(三):数组、矩阵、列表和数据框、因子的应用
- 矛盾
- JDBC连接各种数据库经验技巧集萃
- Git Tutorial
- cvGetCaptureProperty/cvSetCaptureProperty
- 五 STL算法概述
- vb6备忘录(4) 数组
- 如何在局域网内将自己的电脑设置为web服务器
- C#中窗体的close,dispose,以及application.exit()的区别
- Worse is better? 转自robbin
- 03-WPF常用控件
- 寻找数组中和最大的子序列
- FTP数据上传及WinCE系统FTP根目录设定
- 安卓ROM结构
- 变量初始化顺序(不考虑继承关系)