环境管理_cbuilder开发环境_第1页
环境管理_cbuilder开发环境_第2页
环境管理_cbuilder开发环境_第3页
环境管理_cbuilder开发环境_第4页
环境管理_cbuilder开发环境_第5页
已阅读5页,还剩138页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章C Builder开发环境 1 1C Builder概览1 2C 语言简介1 3C Builder集成开发环境习题 1 1C Builder概览 C Builder是Borland Inprise 公司开发的Windows下可视化的C 编程环境 它常被简称为BCB 分别取Borland C Builder的第一个字母 或CB BCB不仅功能强大 而且学习简单 使用方便 深受软件开发人员的喜爱 C Builder目前的最新版本是6 0版 1 1 1Windows环境下的快速开发工具有一句话在软件开发人员之间流传很广 并且在流传过程中形成了若干不同的版本 这句话的上半句是 真正的程序员用C 下半句则是 聪明的程序员用X X在这句话的不同版本中分别为VB Delphi PB等 有人觉得对于这种 X 王婆卖瓜式的自夸 无需当真 但依笔者看却未必 因为VB Delphi PB等开发工具之间有一个共同之处 即它们都是RAD RapidApplicationDevelopment 快速开发工具 因此 若站在比较公正的立场来说 这后半句应该是 聪明的程序员用RAD 此说法若能成立 那么一个必然的推论就是 真正的并且聪明的程序员应该用基于C 的RAD 按照该标准选择编程环境 就目前来说 无疑应该首选Borland公司的C Builder 传统的 软件工程 提倡 先设计 后编程 设计一旦完成 则不允许做过多修改 这种设计原则固然有其合理的一面 但严重制约了开发效率 对于某些开始时对需求并不十分清楚的应用项目 若按此办理则往往将开发人员逼入窘境 快速原型法 或RAD则反其道而行之 它把设计看成需经多次反复才能完成的工作 对一个项目的初步分析完成后 即据此开发出一个程序 原型 然后与用户一起对该 原型 进行评价 找出不足 修改设计后再产生程序 这一过程可重复多次 直到所开发的系统达到用户要求为止 但要有效实现RAD 必须拥有优良的编程环境和代码生成工具 由于BCB具有可视化 面向对象等特性 特别适合作为Windows下企业级应用的RAD开发环境使用 目前 称得上RAD的产品有VB Delphi C Builder PB VFP等 相对于VB等 解释型 的语言来说 Delphi BCB这些以 编译型 的语言为基础的RAD编程环境效率较高 功能也更强大 作为一个RAD开发环境 BCB对Windows和Internet上的各种流行技术都提供了充分的支持 C Builder6 0在先前版本基础上又增加了许多新的功能和特性 它具有很强的图形 图像和多媒体处理功能 对Windows下的OLE COM ActiveX技术提供了很好的支持 在数据库编程方面 BCB提供了各种连接方案以及多层分布式数据处理等先进技术 在Internet和Intranet编程方面 BCB提供了Socket组件和InternetExpress WebSnap等技术 BCB的另一优点是具有极强的兼容能力 它可以编译连接TurboC BorlandC VC Delphi等工具开发的源代码或目标模块 1 1 2C 编译器作为第四代编程环境 BCB具有一定的代码自动生成的能力 但仍需人工编写部分程序代码 这些代码必须用C 语言写成 因此 BCB可被看作是Windows下一个功能强大的C 编译器 它支持ANSIC 标准并在使用部件技术等方面作了扩充 BCB具有编译速度快等优点 经BCB编译后产生的目标文件尺寸小 效率高 可直接在Windows环境下运行 C 是在C语言基础上扩充而成的一种编程语言 它具有C语言紧凑 高效等优点并支持面向对象程序设计的技术 本书第2章将简单介绍C 语言和面向对象程序设计 对已初步掌握C语言的读者来说 只需对面向对象程序设计的有关概念稍有了解 就能使用BCB编写简单程序了 当然 要使用BCB编写复杂的 高质量的程序 就必须对所使用的C 语言的各种特性有深刻理解 我们认为 掌握C 和面向对象程序设计是一个从实践中学习的循序渐进的过程 本书会提供一个很好的起点 1 1 3C Builder的安装和启动C Builder6 0有普通版和Client Server版 通常用光盘安装 它对硬件的最低要求并不高 但为了使用效果好一点 我们建议采用如下基本硬件配置 1 CPU为PentiumII350以上 2 内存128MB以上 3 硬盘总容量10GB以上 可用空间1GB以上 其中安装BCB约用去600MB以上 BCB应安装在32位的Windows上 它们包括Windows95 Windows98 Windows2000 WindowsNT4 0 WindowsMe以及WindowsXP等 执行光盘上的Setup程序进行安装 主要步骤有 1 按提示输入软件的序列号和密码 2 选择安装方式 安装方式有Typical Compact和Custom 当硬盘空间充足时可选Typical 否则选Compact 有经验的用户也可选Custom 3 选择安装目录 一般可采用由安装程序建议的目录 安装完毕后 在 开始 菜单的 程序 项下新添了一项 BorlandC Builder6 点击该项即能启动C Builder6 0 启动后的界面如图1 1所示 图1 1启动BCB后的画面 1 1 4一个简单的程序为了让读者尽早了解在BCB下编程是怎么回事 我们在本节给出一个简单的 Hello World 程序 该程序运行时显示一个窗口 窗口内有一个命令按钮 当按钮被点击时 窗口的标题显示为 Hello World 下面 我们详细给出在BCB下编制该程序的每一步 1 启动BCB 出现如图1 1所示的界面 此时编程环境中已存在一个应用程序的框架 显示在该图右下方的标题为Form1的一个空白的窗口即是该应用程序的窗口 习惯上我们称它为窗体 2 点击控件面板上按钮图案选取按钮控件 然后在应用程序窗体中选择适当位置将按钮放到该空白窗体上 如图1 2和图1 3所示 3 在窗体内选中按钮 然后在对象检阅器内编辑按钮Button1属性 如图1 4所示 我们把按钮的Caption属性改为 Hello 这使得窗体中按钮的标题也变为 Hello 图1 2点击面板上按钮控件 图1 3将按钮放入窗体 图1 4修改按钮的标题 4 双击窗体中标题为Hello的按钮 BCB自动为该按钮的单击事件建立了相应的处理程序 方法 TForm1 Button1Click的框架 此时代码编辑窗口被激活 文本插入点处有如下代码 void fastcallTForm1 Button1Click TObject Sender 这正是TForm1 Button1Click事件代码的框架 在一对大括号内可以由用户输入C 的代码 这些代码将在该按钮被单击 Click 时执行 在本例中 我们输入 Form1 Caption Hello World 即使得TForm1 Button1Click事件有如下代码 void fastcallTForm1 Button1Click TObject Sender Form1 Caption Hello World 5 点击位于BCB界面左上方的工具栏上标有绿色箭头的那个按钮 就可以编译 运行该程序了 若一切顺利 程序运行后 按下 Hello 按钮 窗口的标题就会变为 Hello World 如图1 5所示 至此 我们的第一个Windows应用程序已编制完成 当然这个程序的功能太简单了 但请记住 我们有了一个很好的程序框架 在此基础上增加一点功能并不是难事 最后 我们还要介绍如何将已完成的程序保存 BCB将一个完整的应用程序称为项目 它由若干文件组成 保存一个项目也就是要将该项目的所有文件存盘 图1 5Hello程序运行时的画面 图1 6保存单元文件 通常 应该为项目建立一个文件夹用于保存该项目的文件 我们为 Hello 程序的项目建立的文件夹 可以取名为Hello 在BCB中执行菜单命令File SaveAll 此时 会弹出如图1 6所示的保存单元文件对话框 在标有 保存在 标签的组合框内选中Hello文件夹 在 文件名 文本框内更改文件名 最后按 确认 按钮保存文件 由于SaveAll是保存项目的所有文件 因而一般会出现两次保存文件对话框 第一次 要求保存与程序主窗体Form1对应的代码单元文件 它的默认文件名是Unit1 第二次 要求保存项目文件 它的默认文件名是Project1 对于初学者 最好采用默认的文件名 回到Windows下 看看Hello文件夹内有哪些文件 我们会发现至少有六个文件 Project1 bpr Project1 cpp Project1 res Unit1 cpp Unit1 dfm和Unit1 h 这些文件可看作是 Hello 项目的源文件 若我们在保存项目后再运行一次程序 就会发现Hello文件夹内又增加了四个文件 Project1 obj Project1 exe Project1 tds和Unit1 obj 其中的Project1 exe可脱离BCB在Windows下运行 它的大小仅为25KB 由于这四个文件可以通过编译生成 当磁盘空间紧缺时 例如 当需要保存到软盘时 可将它们删除 特别是Project1 tds文件 它的尺寸很大 1 2C 语言简介 如前所述 BCB使用C 作为编程语言 C 语言是在C语言的基础上扩充而成的 它具有C语言紧凑 高效等优点并支持面向对象程序设计技术 本书假定读者已具有使用C语言编程的基础知识 我们在此基础上介绍学习本书时所需的C 知识 1 2 1面向对象程序设计自20世纪80年代以来 面向对象的技术引起了计算机界的极大关注 随着面向对象程序设计语言的渐趋成熟 作为一种新的程序设计风格 其应用也得到了迅速发展 面向对象是一种对应于真实世界概念化的抽象思维方法 面向对象方法的基本出发点就是按照人类认识世界的方法和思维方式来分析和解决问题的 在面向对象的系统中 对象 Object 是一个封装了数据属性和操作行为的实体 数据描述了对象的状态 操作可操纵私有数据 改变对象的状态 对象内的操作通常叫做方法 对象之间进行通讯的一种构造叫做消息 在面向对象系统中 人们并不是逐个地描述各个具体的对象 而是将注意力集中于具有相同特性的一类事物 抽象出这样一类事物的共同结构和行为 类 Class 是对对象的抽象及描述 是具有共同属性和操作的多个对象的相似特性的统一描述体 类中的每个对象都是该类的实例 由于类描述了数据结构 对象属性 算法 方法 和外部接口 消息协议 因此 类提供了完整的解决问题的能力 在类的描述中 每个类要有一个名字 要能表示一组对象的共同特征 还必须给出一个生成对象实例的具体方法 类不是孤立的 类与类之间有各种关系 其中 特别重要的是层次关系 即可以有父类与子类 它们之间有派生和继承的关系 继承关系具有传递性 在收到消息时 对象要予以响应 不同的对象收到同一消息可产生完全不同的结果 这一现象叫做多态 多态的实现依赖于继承性 要设计一个有意义的类并非易事 但一旦设计完成 就能在程序中被重复使用 因此 一个成熟的面向对象的编程环境往往会提供一组精心设计而成的类供用户使用 以提高软件开发的效率和质量 一般称这样的一组类为类库 C Builder提供的类库名为VCL 而VC 则提供了一个叫做MFC的类库 面向对象程序设计的概念提出来以后 某些公司和机构曾经开发出一些纯粹的面向对象设计语言 如Smalltalk Ada等 但是由于种种原因 这些语言没能够广泛地流行起来 从本质上来讲 我们今天所广泛采用的面向对象的设计语言C 并不是一种纯粹的面向对象的设计语言 C 是C语言的一个超集 它既支持传统的面向过程程序设计 又支持面向对象程序设计 C 与C语言的这种兼容性是其成功的一个重要方面 C 由RichMaseitti提出 它的创造灵感来源于当时计算机语言多方面成果的凝集 特别是BCPL和Simula67 C 的标准化工作于1989年已开始 在支持面向对象特性的开发平台上 日趋进步和完善 1 2 2C 语言对C语言在非面向对象方面的增强C 作为一种混合语言 在面向对象及非面向对象这两个方面都对C语言进行了扩充或修订 使得它既适用于结构化程序设计 又能满足面向对象程序设计的要求 因而很快流行起来 成为当今面向对象程序设计的主要语言 以下是C 对C语言在非面向对象方面的若干重要扩充 1 C 提供了单行注释方式在传统的C语言中C提供了块注释方式 其形式如下 explanationsentence 而在C 中 除了保留了块注释方式外 还增加了一种更为方便的单行注释方式 其形式如下 explanationsentence 2 更为灵活的变量说明在传统的C语言中 局部变量的说明必须放在可执行的代码的前面 数据说明语句和可执行语句的混合将引起编译错误 而在C 中 可以在程序代码块的任何地方进行局部变量的说明 3 结构 联合和枚举名可以直接作为类型名使用在C语言中 对结构 联合和枚举类型进行定义后 要生成该结构 联合和枚举类型的变量 必须在结构名前加上struct 如对BankAccount结构的变量进行说明时使用如下形式 BtructBankAccounta 在C 中 说明方法可简化为 BankAccounta 关键字struct不必要 4 枚举类型与整型的关系在C语言中 枚举值与整型值之间可以相互转换使用 而C 的类型检查则比C要严格 枚举值将被自动转化为整型值使用 但将整型值转化为枚举值则需要强制类型转换 否则会出现编译错误 如下面的一段代码 在C语言中都是可以接受的 但某些语句在C 中则会引起错误 enumname John Mike Rose Joan enumnameperson1 John 正确enumnameperson2 person1 正确enumnameperson3 1 在C 中错误enumnameperson4 enumname 1 在C 中正确无名联合可以通过使用其中数据项的名字直接进行访问 5 作用域限定运算符 作用域限定运算符 用于对当前作用域之外的同名变量进行访问 如在下面的例子中 我们在局部变量var的作用域内使用 var来实现对全局变量var的访问 includeintvar voidmain floatvar var 3 14 var 6 cout localvariablevar var endl cout globalvariablevar var endl 该程序的输出结果如下 localvariablevar 3 14globalvariablevar 6 6 增强了类型转换方式在C 中 除了保留了传统的C语言的强制类型转换方式之外 还可以将类型名作为函数名使用 这将大大提高程序的可读性 例如 floatf 0 01 longl long f longk long f 8 关键字const在C 中 关键字const用于将一个标识符说明为常量 即其值是在程序的运行过程中不变的量 程序不能以任何方式对其进行修改 const与C语言中的 define是有区别的 const所说明的常量是有内存单元与之对应的量 在程序编译时其值还不能确定 而 define所说明的常量是在编译时便能确定其数值的量 关键字const也可以用来修饰函数参数中的某些变量 用以保证被修饰的参数对应的实参在该函数内部不被改动 当关键字const用来修饰指针时 根据使用的形式不同 它可以冻结指针所指向的变量 冻结指针本身或同时冻结指针及其所指向的变量 如下所示 constchar name Mike 冻结指针所指向的变量char constname Mike 冻结指针本身constchar constname Mike 同时冻结指针及其所指向的变量 9 new和deleteC 为了提高内存管理上的灵活性 提供了动态内存分配和释放的操作符new和delete 用来增强C语言中原有的函数malloc 和free new操作符用来动态分配内存 new操作符的使用格式可以参考如下代码 char mybuffer newchar 4096 对于较大的数组 动态分配可以节省大量的堆栈空间 值得注意的是 数组在单独使用时是指向该数组在内存中的起始位置的 而指针也是指向同一个位置的 所以两者可以互换 在程序中new和delete是成对出现的 如果没有释放new操作符分配的内存 则程序将一直占用大量的内存 不过值得注意的是 不要对已经释放的指针再次使用delete 因为它将导致无法预料的结果 new和delete在C 中除了能用于对C中原有类型的变量动态分配和释放内存外 主要用于对C 中动态生成的对象分配和释放内存 当使用new动态生成对象时 new操作符返回一个指向对象在内存中所在位置的指针 对对象的任何操作都要用到这个指针 与其它未初始化的变量一样 未初始化的指针的值是随机的 如果使用未初始化的指针 将导致严重的后果 因此在一般情况下 应该在声明指针后立即对其进行初始化 例如 TEdit Edit1 newTEdit this Edit1 Width 100 Edit1 Height 10 10 内联函数 inline C 提供了内联函数 使用内联函数可以节约函数调用时保留现场所需的系统开销 提高程序执行效率 同时 由于内联函数的使用将增大程序的代码段 因此建议在充分权衡系统开销和程序代码段长度的关系后谨慎使用 11 缺省函数参数在C 的函数调用时 可以缺省函数的参数 但是要使用缺省函数参数 必须在函数定义时为该参数赋一缺省值 且所缺省参数的顺序只能是从右到左 不能随意缺省 请看下面的例子 intfunction inta 0 intb 1 intc 2 以下函数调用都是合法的 function 等同于function 0 1 2 function 12 等同于function 12 1 2 function 12 13 等同于function 12 13 2 function 12 13 14 而以下函数调用则是非法的 function 13 14 function 12 14 12 函数返回值在C 中 任何说明为非void类型的函数都需要指定一个相应类型的返回值 否则在函数的编译时会产生警告错误 1 2 3C 对于面向对象技术的支持类和对象是面向对象技术的基石 因此 我们首先要解决的问题是如何用C 语言来描述类和对象 让我们回忆一下C语言中的结构体这种复合数据类型 结构可把相关联的数据元素组合成一个统一体 它和类非常相似 其区别主要在于C的结构不含成员函数 而C 的类既能包含数据元素 即数据成员 又能包含方法 即成员函数 下面用C 定义了BankAccount 银行帐号 类 该类包含有两个数据成员和两个成员函数 classBankAccount private floatbalance unsignedaccountNumber public voiddeposit floatamount balance amout voidwithdraw floatamout balance amout floatgetbalance returnbalance 可以看出C 中定义类的语句确实同定义结构非常相像 我们使用了关键字class表示类 这里BankAccount是类名 在一对大括号中罗列了所有的数据成员和方法函数 关键字 private 和 public 分别用于说明私有成员和公有成员 前者只允许在属于该类对象的方法内进行访问 后者则可被外部对象的方法访问 给BankAccount类生成静态对象实例的语句可以是 BankAccountBA1 BA2 为了动态生成对象实例 我们必须使用指针和new操作符 BankAccount BA3 BA3 newBankAccount 如果详细介绍C 面向对象技术 可能需要半本书的篇幅 而且比较枯燥 对于学习本书的 基础篇 和 应用篇 我们暂时只需要以上介绍的这些知识就可以了 在本书的 提高篇 将更深入地介绍C 和面向对象的内容 1 2 4VCL组件类前面曾提及BCB开发环境为用户提供的类库被称为VCL VisualComponentLibrary 该类库非常适用于Windows下的快速开发 在VCL中首先定义了一个基类TObject 其它的类都是TObject的后代 所有的组件都是TComponent类的派生类 它们都能放在BCB的组件面板上供取用 组件中有一部分继承自TControl类的又常被称为控件 它们是可视的 有着大体相似的属性和方法 TForm类也称为窗体类 它是应用程序的窗口 通常 在BCB的一个空白程序框架中 已存在着一个由系统生成的空窗体Form1 由于C 中对象的数据成员的类型也可以是类 因此对象中可以含有成员子对象 主要用于包容成员对象的那种对象通常被称为 容器 窗体中可以放入各种组件 因此 窗体也常被当成是容器 属性和事件概念是BCB对C 类的某种扩展和深化 为此BCB中引入了扩展关键字 property 属性是类中一种特殊的数据成员 对该成员的读写常伴随着一系列与WindowsAPI调用有关的组件状态的改变 事件则是一种触发器 它通常与某种特定状态 如接收到某个Windows消息 相联系 用户可以为事件编写代码 该代码只在上述的某种特定状态发生时被执行 在1 1 4节的例子中 我们写代码Form1 Caption Hello World 其中Caption即为类TForm的属性 双击按钮时出现的空白代码框架 void fastcallTForm1 Button1Click TObject Sender 即为Button1对象的OnClick事件的代码框架 在BCB下编程 所要做的工作大部分都与VCL对象的属性与事件有关 由于VCL中有大量的组件 必须循序渐进地学习它们的用法 如果读者能熟练使用多种VCL组件的属性与事件 就能成为一个Windows下的编程高手 1 2 5BCB的字符串类型传统的C语言中没有真正的字符串类型 只有字符数组或指针 因此使用中常带来不便 BCB采纳了AnsiC 中的AnsiString类 弥补了C的不足 此外 BCB中定义的TStrings等类型也非常有用 下面简单介绍这些类型的用法 1 AnsiString类AnsiString类除了将一个长字符串作为它的数据成员外还提供了操纵字符串的方法 并且能方便地与C的字符类型相转换 大部分编程语言都允许使用 号连接两个字符串 但在C中却不行 这会带来许多不便 好在AnsiString解决了这个问题 例如 AnsiStrings1 s2 s3 s1 abc s2 efg s3 s1 d s2 是完全符合C 语法的 由于AnsiString的强大功能和具有与其它编程语言的兼容性 使得它在VCL类的属性和方法参数中被大量使用 AnsiString类提供了如下主要的方法函数 Length返回AnsiString中的字符数 IsEmpty如果AnsiString为空 则返回true 否则返回false SubString返回该AnsiString的子串 c str将AnsiString转化为基本C语言的 char型 因为调用C或C 的函数时 参数的数据类型常常要求是char 所以可使用该函数先将AnsiString转换为char 型 再进行调用 注意 AnsiString c str 返回一个指向AnsiString对象内部字符串缓冲的指针 一旦使用该调用语句结束 这个指针也就不再有效 atoi将数值型字符串转换为整数 itoa将整数转化为字符串 AnsiCompare将该字符串与指定的字符串比较 比较时区分大小写 2 TStrings类TSrings是另一个在VCL中被广泛使用的字符串类型 它可以将一段由若干行组成的文本保存在一个长字符串中 使用TStrings的方法可根据实际需要方便地在这一段文本中插入或删除行 或将其转换为其它字符串类型 VCL中TListBox类组件的Items属性和TMemo类组件的Lines属性都是TStrings类型的 3 TWideString类TWideString类是用于与WindowsOLE和非英文字符集等相兼容的字符串类型 1 2 6BCB的通用函数BCB编程环境下提供了一组通用函数 这些函数主要提供在各种基本数据类型之间进行转换 磁盘文件操作 字符串操作等功能 它们的使用都是比较简单的 下面介绍其中最常用的若干函数 1 IntToStr函数IntToStr函数原型为AnsiString fastcallIntToStr intValue 功能是将整型变量转换为字符串 2 StrToInt函数StrToInt函数原型为int fastcallStrToInt constAnsiStringS 功能是将字符串转换为整型变量 3 FloatToStr函数FloatToStr函数原型为AnsiString fastcallFloatToStr floatValue 功能是将实数型变量转换为字符串 4 StrToFloat函数StrToFloat函数原型为float fastcallStrToFloat constAnsiStringS 功能是将字符串转换为实数型变量 5 FloatToStrF函数FloatToStrF函数原型为AnsiString fastcallFloatToStrF longdoublevalue TStringFloatFormatformat intprecision intdigits 功能是将实数型变量转换为指定格式的字符串 整型参数precision和digits分别指定小数部分的位数和字符串的长度 参数format可取值为sffGeneral sffExponent sffFixed sffNumber以及sffCurrency 6 TimeToStr函数TimeToStr函数原型为AnsiString fastcallTimeToStr System TDateTimeTime 功能是将当前日期和时间转换为字符串对象 7 UpperCase函数UpperCase函数原型为AnsiString fastcallUpperCase constAnsiStringS 功能是将指定的AnsiString字符串转换为大写形式 8 LowerCase函数LowerCase函数原型为AnsiString fastcallLowerCase constAnsiStringS 功能是将指定的AnsiString字符串转换为小写形式 9 IntToHex函数IntToHex函数原型为AnsiString fastcallIntToHex intValue intDigits 功能是将整数转换为十六进制字符串 10 FileExists函数FileExists函数原型为bool fastcallFileExists constSystem AnsiStringFileName 功能是测试指定的文件是否存在 如果存在 则返回true 否则返回false 11 DeleteFile函数DeleteFile函数原型为bool fastcallDeleteFile constAnsiStringFileName 功能是删除指定的磁盘文件 如果操作成功 则返回true 否则返回false 12 CreateDir函数CreateDir函数原型为bool fastcallCreateDir constAnsiStringDir 功能是创建一个新的目录 如果操作成功 则返回true 否则返回false 13 DiskSize函数DiskSize函数原型为int fastcallDiskSize ByteDrive 功能是返回指定磁盘的空间 操作失败时返回 1 参数Drive取值为 0 代表当前盘 取值为1 2 3 时分别代表A B C 盘 14 DiskFree函数DiskFree函数原型为int fastcallDiskFree ByteDrive 功能是返回指定磁盘的剩余空间 操作失败时返回 1 参数Drive的用法与DiskSize函数中的用法相同 15 StrScan函数StrScan函数原型为char fastcallStrScan constchar Str charChr 功能是在指定的字符串中寻找特定的字符 并返回指向该特定字符在字符串中第一次出现位置的字符指针 若找不到该特定字符 则返回NULL 16 StrRScan函数StrRScan函数原型为char fastcallStrRScan constchar Str charChr 功能与StrScan类似 但返回值是指向最后一次出现该特定字符处的指针 1 3C Builder集成开发环境 本章介绍C Builder6 0应用程序集成开发环境 IDE 的各个组成部分及相关的操作 启动BCB 进入IDE 如图1 7所示 我们将该环境分解为四个窗口和六个组成部分 这四个窗口是 程序主窗口 对象监视器 应用程序窗体设计区和代码编辑器 其中 前两个窗口分别位于IDE的上方和左方 后两个窗口都位于IDE的右下方 其中应用程序窗体设计区叠在代码编辑器之上 主窗口的标题是 C Builder6 它可被进一步分解为主菜单 工具栏 组件面板三个部分 这三个部分加上另外三个窗口就是BCBIDE的六个主要组成部分 图1 7BCBIDE的各个组成部分 1 3 1程序主窗口1 主菜单在BCBIDE主窗口顶部是主菜单 它由File Edit Search View Project Run Component Database Tools Windows Help等项及相应的下拉菜单组成 IDE的大部分功能都可由该菜单系统提供 1 File下拉菜单File下拉菜单由New Open OpenProject Reopen Save SaveAs SaveAll Close CloseAll IncludeUnithdr Print Exit等选项组成 选择New时会弹出下拉菜单 从中可选择所需创建的对象或文件类型 其中 NewApplication用于创建一个新的项目 即一个空白的应用程序框架 NewForm则用于将一个空白窗体添加到当前打开的项目中 Open OpenProject Reopen用于打开项目或文件 选用Open和OpenProject时都会出现打开文件对话框 用户可在对话框内选择存放文件的路径以及文件类型 按 打开 按钮即完成 一般常用OpenProject打开项目 此时 与该项目有关的主要文件都已被打开 Reopen提供最近打开过的文件列表供选择打开 As为另存 指将当前文件以另一路径或不同的文件名保存 SaveAll则保存当前项目下的所有文件 建议初学者多使用SaveAll Close CloseAll用于关闭文件 前者只关闭当前正在操作的文件 后者关闭当前项目下的所有文件 用IncludeUnithdr可使当前编辑的源文件中包含另一个源文件 一般被包含的是C 的头文件 扩展名 h 此项操作等同于在源程序中加入 include语句 用Exit可退出BCBIDE 返回到Windows 若文件尚未关闭时选Exit 则IDE会给出提示信息 2 Edit下拉菜单Edit下拉菜单由Undo Redo Cut Copy Paste Undelete Delete SeleteAll Align BringtoFront SendtoBack TabOrder等选项组成 Undo和Redo用于在代码编辑器窗口中进行文本编辑时取消和恢复前一次的操作 它们一般不能用于对窗体中控件的编辑 Align BringtoFront SendtoBack TabOrder用于控件的编辑 其中 Align用于排列 对齐 控件 在进行排列之前应先选中一组需要排列的控件 按住Shift键不放 并用鼠标逐个点击控件就能选中一组控件 BringtoFront和SendtoBack用于处理窗体中若干控件相互重叠的情况 BringtoFront将选中的控件置前 SendtoBack将选中的控件置后 TabOrder用于调整窗体中一组控件在程序运行时发生焦点 光标 转移的先后顺序 Cut Copy Paste Delete Undelete在文本编辑和控件操作两种情况下都能起作用 分别表示对文本或控件进行剪切 复制 粘贴 删除和取消删除操作 其中 Cut和Delete操作前必须先选中文本或控件 进行Paste操作时必须确保剪贴板上有相应的内容存在 3 Search下拉菜单Search下拉菜单由Find SearchAgain Replace GoToLineNumber等选项组成 Find和SearchAgain用于在文本中搜索特定字符串 前者用于首次搜索 后者用于对同一字符串的再次搜索 Replace则在搜索基础上进行替换 选择Find或Replace都会出现对话框 使用时应注意对话框各选项的正确使用方法 这些选项中 Casesensitive表示搜索时对字母区分大小写 Forward和Backward分别表示搜索方向为向前和向后 Global和Selectedtext分别表示在全文范围内和当前选中文本范围内搜索 GoToLineNumber可搜索到文本的某一行 使用时弹出对话框 输入一个行号后即可执行 4 View下拉菜单View下拉菜单由ObjectInspector AlignmentPalette WindowList DebugWindows ToggleForm Unit Toolbars等选项组成 主要功能为控制IDE的外观和在各个窗口间的切换 ObjectInspector激活对象监视窗口 DebugWindows打开Debug 纠错 窗口 WindowList提供包含了当前环境中已打开的全部窗口的一个列表 选中其中一个窗口的名称 按一下 OK 按钮就能使该窗口激活并显示 AlignmentPalette与Edit菜单下的Align项功能相似 但不能通过对话框进行操作 而是提供一个图形化的工具面板用于排列控件 Toolbars可设置工具条 使某些工具按钮显示或关闭 ToggleForm Unit可将当前正在操作的某个窗体快速切换到代码编辑器中与该窗体相关的单元文件 或反过来从当前单元文件切换到窗体 5 Project下拉菜单Project下拉菜单由AddtoProject RemovefromProject ViewSource CompileUnit BuildProject1 Options等选项组成 AddtoProject可将现存的某个单元文件或其它对象添加到当前项目 RemovefromProject则从当前项目中删除某一文件或窗体等对象 操作时都有对话框出现 使用该两项功能时 BCB会对项目及相关代码进行必要的分析和修改 Options设置与项目有关的选项 可选择的选项很多 但大部分都非常专业 初学者一般不应随意改变这些选项的值 CompileUnit编译当前代码文件 BuildProject1则编译整个项目 ViewSource可打开项目的主程序单元的代码进行编辑 一般情况下不必编辑修改该代码 6 Run下拉菜单Run下拉菜单由Run Parameters StepOver TraceInto RuntoCursor ProgramReset ProgramPause AddWatch AddBreakpoint等选项组成 这些菜单项主要用于应用程序运行及调试 Run菜单项编译 链接并且运行应用程序 若选择Parameters 可指定程序运行时的命令行参数 StepOver和TraceInto都是逐句执行程序 但前者对函数调用语句视作整体一次执行 而后者则会跟踪到函数内部逐句执行 在提高篇的第8章 我们将较详细介绍这些菜单命令是如何用于程序调试的 7 Component下拉菜单Component下拉菜单由NewComponent InstallComponent ImportActiveXControl ConfigurePalette等选项组成 用于创建 安装自定义控件及配置控件面板 8 Database下拉菜单Database下拉菜单由Explore SQLMonitor FormWizard等选项组成 主要用于对数据库编程的支持 选择Explore 则弹出 SQLExplore 窗口 该窗口用于数据库系统的SQL设计 选择SQLMonitor 则弹出 SQLMonitor 窗口 该窗口用作SQL操作的监视器 选择FormWizard 则出现一个数据库窗体设计向导 按照屏幕提示 可以很方便地设计一个对简单数据库作常规操作的窗体 9 Tools下拉菜单Tools下拉菜单由EnvironmentOptions EditorOptions ConfigureTools DatabaseDesktop ImageEditor等选项组成 用于环境设置并提供一些软件工具 EnvironmentOptions和EditorOptions分别对IDE和代码编辑器进行设置 这些设置的可选项目很多 其中有一些非常实用 例如 我们可在EnvironmentOptions对话窗口中发现 Preferences 页的 Formdesigner 框内有一项 Snaptogrid 当该项选中时 若在窗体上用鼠标移动控件 控件只能定位在格点 Grid 上 该项未选中时 无此限制 此外 还可输入 GridsizeX 和 GridsizeY 以改变格点的间距等 ConfigureTools可对位于IDE左上方的工具条进行配置 DatabaseDesktop ImageEditor都是BCB提供的实用工具 DatabaseDesktop相当于是一个小型的数据库管理系统 DBMS 主要用于处理Paradox类型的本地数据 我们将在 应用篇 的第5章作较详细的介绍 ImageEditor工具用于对简单的位图图像进行编辑 10 Window下拉菜单Windows下拉菜单中各项命令可用于在BCBIDE中的各个窗口之间切换 11 Help下拉菜单Help下拉菜单中各项为用户提供帮助 本章1 3 5节将介绍BCB的帮助系统 2 工具栏BCBIDE的工具栏位于主菜单的左下方 上面排列着若干个图标 它们分别与主菜单上的某些常用选项相对应 点击这些图标能更快捷地执行相应的菜单命令 每个图标都有自己的名称 只要将鼠标箭头在图标上停留一点时间 IDE就会提示该图标的名称 如图1 8所示 上排从左往右依次为New Open Save SaveAll OpenProject AddfiletoProject RemovefilefromProject Help图标 下排从左往右依次为ViewUnit ViewForm ToggleForm Unit NewForm Run Pause Traceinto StepOver图标 工具栏是可以通过设置进行改变的 所以上述的排列不是固定不变的 图1 8BCB的工具栏 3 组件面板在本章1 1 4节中的 Hello World 范例中 我们从组件面板上选择一个按钮并将它放到应用程序主窗体内 这种 所见即所得 的操作方式使程序的界面设计变得轻松随意 C Builder和它的姐妹产品Delphi有一个明显的优点就是可供选用的组件特别多 这些组件被分门别类地排列在组件面板上 使用起来非常方便 组件面板位于BCB主窗口的右下方 它由若干个页面组成 点击页标签 可切换当前页 点击位于面板右端的两个小箭头 可横向滚动页标签 使所有的页能显示 每个组件都有自己的名称 只要将鼠标箭头在组件图标上停留一点时间 IDE就会提示该组件的名称 在BCB中控件是指具有某些Windows窗口特性的可视组件 或者用更专业一点的说法就是属于由TControl派生的类 由于大部分最常用的组件都是控件 因此有时也将组件面板称为控件面板 有些书上甚至将两者混为一谈 不同版本BCB的组件面板的页数和每页上的组件是有差别的 但差别不是很大 BCB支持用户创建自己的组件并把它安装到面板上 此外它也允许用户改变组件在面板上的排列 因此 即使对同一版本的BCB 不同用户组件面板的内容也不尽相同 本节中介绍的是BCB6 0标准安装下的组件面板 下面简单介绍组件面板上常用的各个页 对其中各个组件的具体用法将在后续章节中结合编程技术进行介绍 1 Standard页Standard页上有16个组件 常用的有 主菜单 MainMenu 标签 Label 文本编辑框 Edit 备注框 Memo 按钮 Button 复选框 CheckBox 列表框 ListBox 组合框 ComboBox 滚动条 ScrollBar 单选按钮组 RadioGroup 和面板 Panel 等 如图1 9所示 这些组件主要用于创建应用程序界面和各种对话框 图1 9Standard页上的组件 2 Additional页Additional页上有22个组件 常用的有 快速按钮 SpeedButton 掩码编辑框 MaskEdit 图像 Image 图形 Shape 和图表 Chart 等 如图1 10所示 这些组件用于程序界面设计 图形 图像显示等 图1 10Additional页上的组件 3 Win32页Win32页上有19个组件 常用的有 RTF编辑器 RichEdit 页面控制框 PageControl 进度显示栏 ProgressBar 微调按钮 UpDown 日期输入框 DateTimePicker 月份牌 MonthCalendar 和树结构显示框 TreeView 等 如图1 11所示 这些控件功能强大 应用广泛 其中 RichEdit可显示和编辑丰富的格式文本 这是一种标准的格式化文本文件 在Windows下扩展名为 rtf 可在Word等字处理软件中打开 DateTimePicker或MonthCalendar可提供非常友好的日期输入界面 TreeView可提供处理树形结构所需的图形界面 但使用较复杂 图1 11Win32页上的组件 4 System页System页上有8个组件 常用的有 Timer 定时器 MediaPlayer 媒体播放器 和OleContainer Ole容器 等 如图1 12所示 这些组件用于时间控制 播放多媒体和插入Ole对象等 5 Dialogs页Dialogs页上有10个对话框组件 最常用的有 打开文件对话框 OpenDialog 保存文件对话框 SaveDialog 字体对话框 FontDialog 颜色对话框 ColorDialog 和打印对话框 Printdialog 等 如图1 13所示 它们将标准Windows风格的对话框提供给应用程序 使用十分方便 图1 12System页上的组件 图1 13Dialogs页上的组件 6 DataControls BDE ADO DataAccess页Date Controls BDE ADO DateAccess这几个页上的组件都是用于对数据库应用系统开发提供支持的 与以前

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论