none
大家觉得这本新书怎样 RRS feed

  • 常规讨论

  • 《老兵新传:Visual Basic核心编程及通用模块开发》(清华大学出版社),上个月出版的,好像不错的样子

    http://www.tup.com.cn/book/Showbook.asp?CPBH=043360-01&DJ=89

    目录

    《老兵新传:visual basic核心编程及通用模块开发》



    第一篇 高级技术篇

    第1章 万丈高楼平地起,一劳永逸 打地基——知识准备        2

    1.1 使用windows api函数        2
    1.1.1 api函数的声明        2
    1.1.2 使用api函数的注意事项        6
    1.2 模块化编程        7
    1.2.1 我能在一天之内做出一个软件吗        7
    1.2.2 用标准模块还是类模块        7
    1.2.3 怎样创建类模块        8
    1.3 编程风格        12
    1.3.1 变量在使用前一定要定义        12
    1.3.2 尽量不要用variant数据类型        12
    1.3.3 代码的缩进和换行        13
    1.3.4 避免重复用对象名称做一串调用        13
    1.3.5 boolean型条件表达式的写法        15
    1.3.6 字符串为空串的判断        15
    1.3.7 能用常量就不要用函数求值        15
    1.3.8 数组下标从1开始        16
    1.3.9 用optional选项定义函数的参数        16
    .1.3.10 不能滥用goto语句不代表不能用goto语句        17
    1.3.11 尽量少用activex控件        17
    1.4 条件编译        18
    1.4.1 什么是条件编译        18
    1.4.2 条件编译有什么用        18
    1.5 获取资料        20
    1.5.1 msdn        20
    1.5.2 借助visual c++的头文件        22
    1.5.3 其他资料        23


    第2章 这个可以有——在vb中使用指针        24

    2.1 在vb中使用指针变量        24
    2.1.1 什么是指针        24
    2.1.2 如何实现指针变量        24
    2.2 varptr,strptr,objptr函数和addressof运算符        25
    2.2.1 内联类型和指针类型        25
    2.2.2 varptr,strptr和objptr函数        27
    2.2.3 addressof运算符        27
    2.3 copymemory函数        28
    2.3.1 copymemory函数的声明和功能        28
    2.3.2 copymemory函数用于内联类型的数据传递        28
    2.3.3 copymemory函数用于字符串类型的数据传递        29
    2.3.4 对象的弱引用        30
    2.4 在vb中使用指针程序举例        32
    2.4.1 使用指针实现不同类型数据的交换        32
    2.4.2 使用指针实现不同窗体模块的数据交换        33
    2.4.3 不使用数组类型的参数向函数传递数组        34
    2.4.4 用一个long型参数向函数传递任意类型任意大小的数据        35
    2.5 部分字节运算的问题和解决办法        36
    2.5.1 or按位或运算        36
    2.5.2 取长整数的高位和低位        40


    第3章 不做数据的奴隶——常用数据结构        42

    3.1 何谓数据结构        42
    3.2 堆栈        43
    3.2.1 什么是堆栈        43
    3.2.2 堆栈的基本算法        44
    3.2.3 堆栈的通用模块实现        44
    3.2.4 堆栈通用模块的使用        51
    3.3 哈希表        53
    3.3.1 什么是哈希表        53
    3.3.2 哈希表的基本算法        54
    3.3.3 哈希表的通用模块实现        55
    3.3.4 哈希表通用模块的使用        75
    3.3.5 哈希表类模块与vb的collection对象的效率比较        77
    3.4 带“回收站”的数组        79
    3.4.1 基本思想        79
    3.4.2 程序实现        79


    第4章 青出于蓝胜于蓝——子类技术        84

    4.1 windows窗口和消息驱动机制        84
    4.1.1 窗口        84
    4.1.2 窗口的消息驱动机制        85
    4.1.3 消息的组织和发送        87
    4.1.4 visual basic事件与消息        89
    4.2 子类技术及其常规实现        89
    4.2.1 子类技术简介        89
    4.2.2 子类技术的常规实现        91
    4.2.3 子类技术常规实现的问题        96
    4.3 开发实现子类技术的通用模块        97
    4.3.1 通用模块的目标        97
    4.3.2 封装子类信息的类模块        98
    4.3.3 实现子类技术的标准模块        106
    4.3.4 子类技术通用模块小结        118
    4.4 子类技术通用模块的用法举例        119
    4.4.1 标准模块module1的设计        120
    4.4.2 窗体form1的设计        121
    4.4.3 程序的运行效果        122


    第5章 想解雇activex通用控件吗—— 使用api函数创建控件        124

    5.1 控件的深入理解        124
    5.1.1 activex控件        124
    5.1.2 dll通用控件库        125
    5.1.3 控件的运行机制        128
    5.1.4 简单实例——用api函数创建animation控件        136
    5.2 用api函数创建控件的模块划分        140
    5.2.1 实现控件的类模块        140
    5.2.2 支持的标准模块        143
    5.2.3 其他“黑匣子”模块        144
    5.2.4 模块划分小结        144
    5.3 mdlapicontrolssupport标准模块        145
    5.3.1 公有常量定义        146
    5.3.2 控件类型的枚举类型定义        147
    5.3.3 管理已创建控件        149
    5.3.4 子类处理的自定义窗口程序        151
    5.3.5 标准模块的其他内容        156
    5.4 clscontrolbase基类模块        157
    5.4.1 api函数声明和常量、类型定义        157
    5.4.2 创建控件        159
    5.4.3 实现控件的共有属性        161
    5.4.4 实现控件的共有方法        176
    5.4.5 类模块的initialize和terminate事件过程        181
    5.5 实现跳格表控件的控件类模块clsapitabs        182
    5.5.1 api函数声明和常量、类型定义        183
    5.5.2 继承的“变通”实现        184
    5.5.3 创建跳格表控件        185
    5.5.4 实现跳格表控件的属性        188
    5.5.5 实现跳格表控件的方法        190
    5.5.6 实现跳格表控件的事件        193
    5.5.7 clsapitabs控件类模块的应用实例        196
    5.6 实现状态栏控件的控件类模块clsapistabar        198
    5.6.1 api函数声明和常量、类型定义        199
    5.6.2 继承的“变通”实现        200
    5.6.3 创建状态栏控件        200
    5.6.4 状态栏分栏和分栏属性        202
    5.6.5 状态栏的其他功能        210
    5.6.6 实现状态栏的事件        211
    5.6.7 clsapistabar控件类模块的应用实例        212
    5.7 实现丰富格式文本框控件的控件类模块clsapirichtextbox        215
    5.7.1 richtextbox控件加载和继承的“变通”实现        215
    5.7.2 创建richtextbox控件        216
    5.7.3 管理文本和rtf代码        219
    5.7.4 选择区域        227
    5.7.5 文本的剪切、复制、粘贴        229
    5.7.6 设置文本格式        229
    5.7.7 实现richtextbox的事件        232
    5.7.8 实现richtextbox的其他功能        233
    5.7.9 clsapirichtextbox控件类模块的应用实例        234


    第6章 路见不平一声吼,强大功能我也有 ——常见vb系统功能问题和解决        237

    6.1 长字符串处理        237
    6.1.1 vb系统中的字符串连接运算及问题        237
    6.1.2 解决方案——clslongstring类模块        240
    6.1.3 改进字符串连接效率测试        250
    6.2 多种分行格式的纯文本文件的按行读取        251
    6.2.1 vb按行读取文本文件的常规方法及问题        251
    6.2.2 二进制读取文本文件        253
    6.2.3 设计类模块支持多种分行格式        255
    6.2.4 类模块的使用        274
    6.3 部分字符串函数的增强        275
    6.3.1 split函数的增强        275
    6.3.2 trim函数的增强        281
    6.3.3 判断collection对象的键是否存在        283
    6.4 解决控件不支持鼠标滚轮的问题        284
    6.4.1 鼠标滚轮消息wm_mousewheel        285
    6.4.2 窗口滚动消息wm_hscroll和wm_vscroll        285
    6.4.3 解决鼠标滚轮问题的通用模块        287
    6.5 增强vb的滚动条控件        289
    6.5.1 基本思路        290
    6.5.2 实现技术        291
    6.5.3 类模块的完整代码        297
    6.5.4 增强滚动条通用模块使用举例        303


    第7章 让你的程序在哪都不out——使程序支持多国语言版        308

    7.1 多国语言支持的主要问题        308
    7.2 字符串资源和资源加载        309
    7.2.1 字符串资源        309
    7.2.2 vb的资源编辑器        310
    7.2.3 解决不同语言语法元素顺序问题        311
    7.3 编写支持多国语言版程序的通用模块        313
    7.3.1 公有函数        313
    7.3.2 条件编译的全局元素        314
    7.3.3 开发多国语言版的程序小结        316
    7.4 支持多国语言版的程序实例        317
    7.4.1 简单实例        317
    7.4.2 改造clsreadlines类模块        319



    第二篇 功能模块篇


    第8章 程序骨感没人爱——windows绘图和图形界面增强        324

    8.1 gdi的基本原理        324
    8.1.1 色彩和坐标        324
    8.1.2 设备环境简介        327
    8.1.3 gdi对象        330
    8.2 高级文本描绘的类模块clsdrawtext        335
    8.2.1 drawtext函数        335
    8.2.2 clsdrawtext类模块的开发        338
    8.2.3 clsdrawtext使用的实例程序        349
    8.3 绘制windows图形元素        352
    8.3.1 绘制蚀刻线        352
    8.3.2 绘制3d效果的边框        354
    8.3.3 绘制windows按钮元素        356
    8.3.4 绘制首尾移动样式的按钮        361
    8.4 绘制透明位图        363
    8.4.1 位图简介        364
    8.4.2 光栅操作        366
    8.4.3 绘制透明位图        367
    8.4.4 程序实例        371
    8.5 为静态图形添加图形热区        372
    8.5.1 图形热区实现的基本思路        372
    8.5.2 开发图形热区管理类模块clsgraphcoords        373
    8.5.3 图形热区编程实例        381
    8.6 改变窗体透明度        383
    8.6.1 设置窗体透明度的api函数        384
    8.6.2 编写类模块封装设置窗体透明度的api函数        384
    8.6.3 程序实例        388
    8.7 使控件具有windows xp风格的外观        391
    8.7.1 xp风格外观的控件探秘        391
    8.7.2 使应用程序中的控件具有xp风格        393
    8.7.3 程序实例        397


    第9章 搞定这个怕什么?你懂我的—— 菜单高级控制和菜单选择助手        398

    9.1 编写菜单控制标准模块mdlmenufuncs        399
    9.1.1 菜单的句柄        399
    9.1.2 获取菜单项信息        402
    9.1.3 设置菜单项信息        406
    9.1.4 设置菜单项高亮状态        412
    9.1.5 返回或设置子菜单默认项        412
    9.1.6 获得菜单中的菜单项总数        413
    9.1.7 系统菜单控制        414
    9.2 菜单选择助手        415
    9.2.1 基本思路        416
    9.2.2 在mdlmenufuncs中添加的完整代码        419
    9.2.3 clsmenuselassist的完整代码        420
    9.3 程序实例        423
    9.3.1 菜单选择助手功能演示        423
    9.3.2 标准模块mdlmenufuncs部分功能演示        423

    第10章 玩转注册表,换汤不换药——简化ini文件和注册表编程        426

    10.1 ini文件和使用ini文件保存信息        426
    10.1.1 ini文件的结构        426
    10.1.2 ini文件读写的主要api函数        427
    10.1.3 封装ini文件的读写操作        428
    10.1.4 ini文件读写的实例程序        429
    10.2 注册表结构简介        429
    10.2.1 控制项        430
    10.2.2 子项        432
    10.2.3 键值        432
    10.3 编写通用模块封装常用注册表读写操作        433
    10.3.1 项的句柄和项的打开、关闭        433
    10.3.2 固定子项位置        435
    10.3.3 创建或删除子项        436
    10.3.4 读取子项键值        438
    10.3.5 设置子项键值        440
    10.3.6 删除子项键值        442
    10.3.7 读取注册表任意位置数据        443
    10.3.8 设置文件关联        444
    10.4 注册表编程实例        448
    10.4.1 记忆窗体位置        448
    10.4.2 在固定子项下读写数据        448
    10.4.3 建立和删除文件关联        449


    第11章 真的很给力——文件系统编程        451

    11.1 文件系统操作        451
    11.1.1 列文件目录        451
    11.1.2 判断文件(夹)存在        457
    11.1.3 文件名操作函数        461
    11.1.4 创建文件夹        466
    11.1.5 文件的复制、移动和删除        467
    11.1.6 获得驱动器信息        470
    11.1.7 获得临时文件        475
    11.2 获得文件属性        477
    11.2.1 文件名属性        477
    11.2.2 文件大小和文件属性        478
    11.2.3 文件时间属性        480
    11.2.4 文件属性对话框        483
    11.2.5 文件类型字符串和文件图标        484
    11.3 打开/保存文件对话框的通用模块        491
    11.3.1 打开/保存文件对话框的相关api函数        491
    11.3.2 编写通用模块        494
    11.3.3 通用模块使用实例        503
    11.4 浏览文件夹对话框的通用模块        505
    11.4.1 浏览文件夹对话框的相关api函数        505
    11.4.2 编写通用模块        507
    11.4.3 通用模块使用实例        509
    11.5 制作自己的简易资源管理器        509


    第12章 非“程”勿扰——其他常见系统功能        518

    12.1 运行应用程序        518
    12.1.1 运行程序或打开文档        518
    12.1.2 运行程序并等待程序结束        522
    12.1.3 程序实例        528
    12.2 监视windows剪贴板        530
    12.2.1 剪贴板查看器和查看器链        530
    12.2.2 使vb程序具有剪贴板监视功能的通用模块        532
    12.2.3 剪贴板监视程序举例        536
    12.3 设置系统热键        537
    12.3.1 设置系统热键的有关知识        538
    12.3.2 实现系统热键通用模块的完整代码        541
    12.3.3 程序实例        548
    12.4 添加系统托盘图标        550
    12.4.1 相关api函数        550
    12.4.2 实现系统托盘图标通用模块的完整代码        552
    12.4.3 程序实例        557


    第三篇 应用模块篇

    第13章 我是勤奋的“猪”,我很乖——智能组合框        562

    13.1 智能列表项维护        562
    13.1.1 类模块对象与组合框控件的关联        562
    13.1.2 不重复地添加列表项        563
    13.1.3 列表项的保存和加载        565
    13.2 实现按汉字拼音字头的中文自动输入        568
    13.2.1 实现原理        568
    13.2.2 获得汉字的拼音字头        570
    13.2.3 查找拼音字头        572
    13.2.4 实现按拼音字头自动输入        573
    13.2.5 自动提示        575
    13.3 智能组合框的其他功能        578
    13.3.1 返回或设置下拉列表是否被拉下        578
    13.3.2 设置下拉列表的高度        579
    13.3.3 获取或设置下拉列表的最小宽度        579
    13.4 智能组合框应用实例        580


    第14章 “时”上编程——用api 函数实现定时器        583

    14.1 用api函数创建定时器的通用模块        583
    14.1.1 定时器简介        583
    14.1.2 使用api函数创建定时器        584
    14.1.3 定时器支持模块mdltimersupport        585
    14.1.4 定时器类模块clstimer        587
    14.2 定时器通用模块应用实例        590
    14.2.1 类模块内的定时器使用        590
    14.2.2 标准模块内的定时器使用        591
    14.3 通过定时器变通实现多线程        592


    第15章 谁说这事不能说太细——进度指示        595

    15.1 编写长时间运行程序需注意的主要问题        595
    15.2 使程序在运行途中响应用户按下【取消】按钮        599
    15.3 开发工作助手类模块clsoperassistant        601
    15.3.1 数据定义        601
    15.3.2 更新进度指示        606
    15.3.3 显示简短提示文本        610
    15.3.4 响应用户中途取消        611
    15.3.5 出错提示        613
    15.3.6 程序开始和结束        613
    15.3.7 清除方法clear        615
    15.3.8 类模块的initialize和terminate事件过程        616
    15.4 工作助手类模块的应用实例        616
    15.5 开发指示进度窗体        618
    15.5.1 指示进度窗体的运行效果和调用        618
    15.5.2 在工作助手类模块中添加驱动窗体的代码        619
    15.5.3 开发frmworkingavi窗体        621


    第16章 边界条约用户定——实现运行时控件的边框调整        629

    16.1 解决边框调整问题的基本思路        629
    16.1.1 通用模块的使用        629
    16.1.2 frame 控件的作用        630
    16.1.3 控件大小位置的重新调整        631
    16.1.4 上下型和左右型风格        632
    16.2 开发边框调整的通用模块        633
    16.2.1 控件关联        633
    16.2.2 有关的数据定义        635
    16.2.3 重新安排控件大小和位置        642
    16.2.4 处理分隔线拖动事件        644
    16.2.5 类模块的initialize和terminate事件过程        648
    16.3 边框调整通用模块应用实例        648


    第17章 “泡泡”几时有,自己编程瞅—— 自己编程实现气泡提示框        653

    17.1 制作气泡型窗体        653
    17.1.1 制作气泡型窗体的基本思路        653
    17.1.2 制作气泡型窗体实例        656
    17.2 气泡提示框的通用模块        658
    17.2.1 窗体的界面设计        659
    17.2.2 气泡样式和图标类型的枚举类型        659
    17.2.3 属性和常量定义        662
    17.2.4 显示气泡提示        664
    17.2.5 指向控件的气泡提示        676
    17.2.6 气泡提示的关闭        677
    17.2.7 窗体的加载和卸载        677
    17.3 气泡提示框程序实例        678


    第18章 乱“式”英雄——具有高级功能的表达式计算        680

    18.1 表达式计算的算法简介        680
    18.2 clscacuexp类模块的数据定义        682
    18.2.1 数据类型        682
    18.2.2 表达式“解析”与表达式元素        684
    18.2.3 表达式中的常量元素        686
    18.2.4 表达式中的变量元素        687
    18.2.5 运算符和函数的常量定义        690
    18.2.6 表达式字符串属性        696
    18.2.7 计算结果属性        697
    18.2.8 错误信息属性        698
    18.3 clscacuexp类模块的功能代码        699
    18.3.1 表达式解析        699
    18.3.2 表达式计算        713
    18.4 clscacuexp类模块的使用实例        725


    索引        727
    参考文献        734

    部分前言内容:

      本书所介绍的通用模块大多数具有如下特点:

      (1)封装性强:无论标准模块还是类模块都自成一体,具有较强的独立性和内聚性。主要表现在使用局部变量和局部API声明、合理设计模块内函数的功能 和参数、对其他模块的依赖很少,像子类操作、函数指针、对象地址、对象关联、资源释放等复杂的操作都被封装在模块内部。今后在开发新的程序时,根本不必考 虑这些细节,也不必干预模块内的代码,而只需把模块当做“黑匣子”添加进工程,再通过几个简单的函数调用即可实现功能。

      (2)使用方便:通用模块在实现功能时,几乎不需要添加任何引用或任何的ActiveX控件,而仅依靠VB基本的功能或API函数实现。因此模块对各 种组件或第三方控件几乎没有依赖,它们只是纯粹的文本代码;也就是说,只要在工程中添加几个纯文本的代码模块即可实现VB程序功能的强大提升。此外,模块 的设计本着让主调程序调用负担最低的原则,模块编写好后,主调程序为调用模块功能而编写的代码极少。

      (3)功能强大:模块中大量调用了Windows的API函数,并且使用了指针,很多程序还涉及了Windows的核心。可以说Windows能做的,VB都能做!

      (4)可重用性强:模块可以被添加到任何工程,又可被用于工程中的任何窗体、模块和类模块中。

      (5)便于开发绿色软件:本书所介绍的通用模块一般属于类模块和标准模块,还有少量窗体模块,而本书不准备介绍任何ActiveX控件的开发。因此使 用本书所介绍的通用模块编写VB程序,很少或不需任何额外的引用或ActiveX控件的支持,在程序发布和安装时也不必包含过多的系统文件或注册组件。实 际上使用这些通用模块所开发的应用程序在Windows 2000及以上系统可以直接运行,根本不需要打包安装程序和制作setup。


      开发通用模块,实际上是丰富了VB程序员可以使用的函数库和类库,这相当于是在VB的基础上搭建了一套自己的开发环境。而这一套开发环境提供的功能, 有很多比其他语言提供的还要强大,但使用起来却比其他语言还要容易。这就使得用VB语言开发的程序不仅不逊色于其他语言,而且更有着VB简单易学、容易上 手的特点作为支持,在开发速度上也会比使用其他语言还要快。


      本书适合的读者

      本书是介绍使用Visual Basic做高级开发的书籍,适合对Visual Basic已经有了基本的掌握,想进一步提高Visual Basic编程能力,以及在编程中遇到一些令人头疼的问题而正在寻找解决方案的读者。对使用其他语言开发Windows程序的读者来说,书中的许多方法和 编程技巧也会对他们有一定的参考价值,因为无论用什么语言开发,Windows的运行机制是不变的,程序的设计思路也都是可以借鉴的。本书假定读者已具有 以下知识:

    .  对Visual Basic已经有了基本的掌握,如常用控件的使用、程序结构、变量、语句、函数、对象的属性、事件、方法等,已经能够用Visual Basic编写简单的程序,因为本书不会涉及这些基本的Visual Basic编程方法;

      计算机基础知识的一般了解,如进制转换、内存、指针等;

      最基本的C语言的基础知识,因为Windows API函数是用C语言编写的,为了能够读懂参考资料,读者需要了解一些最基本的C语言知识;但读者不需要完全掌握C语言,只需要了解可能用到的C语言常量、变量、数组、结构体、指针等数据类型和简单的函数结构。


      关于本书的内容

      本书分为三个篇章:

      第一篇:高级技术篇

      本篇介绍使用Visual Basic进行高层次软件开发和解决实际问题的技术,这些技术在本书后续章节的内容中也会被大量用到。例如:如何在VB中使用指针、开发常用的数据结构模 块、开发实现子类技术的通用模块、Windows窗口、控件、消息的运行机制、如何通过API函数创建控件、如何开发支持多国语言版的程序等。在本篇章节 中还将介绍如何解决VB编程时一些常见的并很棘手的问题。这些技术大多是以编写为“通用模块”的形式实现的,使技术细节只需考虑一次,在以后的编程中可以 直接把“通用模块”当做“黑匣子”来调用。


      第二篇:功能模块篇

      本篇介绍如何在VB中编写一些通用的功能模块,以帮助开发人员实现VB系统不曾提供的、但开发软件时却常需要实现的重要功能,并胜任快速开发:如增强 图形界面、菜单高级控制、文件操作、注册表操作、系统热键、系统托盘图标等。这些模块大多也可以看作是对API函数的封装,实现这些功能的API函数都被 自己编写的、调用起来更为方便的简单函数所替代。这在以后的编程中,再不必考虑细节,并简化程序设计,大大减少编程工作量,提高开发效率。


      第三篇:应用模块篇

      有一句格言讲到:“一个具体的问题胜过数千个抽象的方案”。本篇就针对在软件开发时可能遇到的具体编程问题,每章开发一个通用模块,实现软件中一个常 见的功能。限于篇幅,本篇只介绍有代表性的几种功能的通用模块实现,如智能组合框、定时器、进度指示工作助手、控件的边框调整、气泡提示、表达式计算等。 希望读者能够举一反三,并自己开发出更多的通用模块,使这些模块能够像“积木”一样被积累,在需要时可随时被添加到VB工程中使用,为自己的VB编程实践 和软件开发添砖加瓦。

      读过本书后,相信广大的Visual Basic编程人员和VB爱好者,尤其是使用Visual Basic语言做软件项目开发的读者,一定会有所收获。

    精彩书摘

      3.3 哈希表
      3.3.1 什么是哈希表
      3.3.1.1 提出问题

      在程序设计中,经常需要维护一个列表,比如学生列表、货品列表、窗体列表等。对这些列表最频繁的一种操作是能够通过给定的一个编号快速地找到项目。例 如给定一个学生的学号,就能快速找到该学生的数据;给定一个窗体的编号,就能快速定位到窗体以便对窗体进一步操作(如将窗体显示出来)等。也就是说这类列 表中的每项数据是由两部分组成的:一是可以惟一标识本条数据的一个编号,二是数据本身。我们把前者这种可以惟一标识一条数据的编号称为键,后者称为数据或 值。因此问题可以概括为:维护一个列表,给定一个键后,能快速地找到对应的数据。

      这可以通过数组来实现,比如把学生、货品、窗体等信息存放到数组中,数组的下标就是键,即把数据存储到与编号相同下标的空间中。如果给定了学号、货品号、窗体编号,就是给定了数组的下标,通过数组的下标可以直接找到数组元素。然而,这里有一个问题是:


      学号、货品号、窗体编号等可能是一个很大的数字,例如学号可能是8位数字,那么定义的数组就至少应该有108个元素,而实际学生人数远没有108个。 也就是说实际数据只占用了数组的很小一部分,在“数据结构”中称这个数组是稀疏的(sparse)。显然采用上述这种数组的存储方法将大量浪费存储空间。


      VB中有一种Collection对象也可以用于处理这类数据,Collection对象中的每个元素可以有一个键和一个值。通过Item方法给定一 个键作为参数就能快速地返回数据。然而Collection对象的效率很低,处理少量数据尚可,当处理的数据量很大时,会严重影响程的效率,稍后还要讨论 这个问题。

    2012年12月13日 12:10

全部回复