08-第十一章c++Builder高级应用
- 格式:ppt
- 大小:445.50 KB
- 文档页数:72
在编程的过程中,文件的操作是一个经常用到的问题,在C++Bui lder中,可以使用多种方法对文件操作,下面我就按以下几个部分对此作详细介绍,就是:1、基于C的文件操作;2、基于C++的文件操作;3、基于W INAPI的文件操作;4、基于BCB库的文件操作;5、特殊文件的操作。
壹、基于C的文件操作在A NSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。
一、流式文件操作这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下:typed ef st ruct{int leve l; /* fill/empt y lev el of buff er */unsi gnedflags; /*Filestatu s fla gs */char fd;/* Fi le de scrip tor */uns igned char hold; /*Unget c cha r ifno bu ffer*/in t bsi ze; /* Buf fer s ize */uns igned char _FAR *buf fer;/* Da ta tr ansfe r buf fer */uns igned char _FAR *cur p; /* Curr ent a ctive poin ter */uns igned iste mp; /* Tem porar y fil e ind icato r */short toke n; /* Used forvalid ity c hecki ng */} FI LE; /* Thi s isthe F ILE o bject */FIL E这个结构包含了文件操作的基本属性,对文件的操作都要通过这个结构的指针来进行,此种文件操作常用的函数见下表函数功能fope n() 打开流f close() 关闭流fp utc()写一个字符到流中fget c() 从流中读一个字符f seek() 在流中定位到指定的字符fputs() 写字符串到流fget s() 从流中读一行或指定个字符fp rintf() 按格式输出到流fsc anf()从流中按格式读取feof() 到达文件尾时返回真值ferro r() 发生错误时返回其值rewin d() 复位文件定位器到文件开始处r emove() 删除文件f read() 从流中读指定个数的字符fwrit e() 向流中写指定个数的字符tmp file() 生成一个临时文件流tm pnam() 生成一个唯一的文件名下面就介绍一下这些函数1.fo pen()fo pen的原型是:FI LE *f open(const char *fil ename,cons t cha r *mo de),f open实现三个功能为使用而打开一个流把一个文件和此流相连接给此流返回一个FI LR指针参数fil ename指向要打开的文件名,mode表示打开状态的字符串,其取值如下表字符串含义"r"以只读方式打开文件"w"以只写方式打开文件"a"以追加方式打开文件"r+"以读/写方式打开文件,如无文件出错"w+"以读/写方式打开文件,如无文件生成新文件一个文件可以以文本模式或二进制模式打开,这两种的区别是:在文本模式中回车被当成一个字符'\n',而二进制模式认为它是两个字符0x0D, 0x0A;如果在文件中读到0x1B,文本模式会认为这是文件结束符,也就是二进制模型不会对文件进行处理,而文本方式会按一定的方式对数据作相应的转换。
C++Builder的基本功能我们用高级语言写程序,我们很得意,因为高级语言比较接近人类的语言,使我们用起来得心应手,所以我们当然得意。
但我们更得意的一定是让程序代码赶快变成可执行文件。
无论是在写代码的过程,还是最后要编译成可执行文件,都需要有一个工具存在。
这一工具一般称为编程集成环境(IDE)。
之所以称为集成,是因为从写代码到最后软件的出炉,我们需要它的地方实在太多了,这里列出其中最重要的功能项。
1、代码编辑:方便的代码编辑功能。
尽管你可以使用记事本、Word或其它任何文本编辑器来写代码,但除非特殊需要,否则那将是极为低效的方法。
相反,现在的编程集成环境,都相当的智能,举例如:代码自动功能,可以在很多情况下自动完成我们所需的代码,既准确还迅速。
Borland公司出品的编程集成环境不仅有常见的关键字高亮等功能,还支持代码模板,支持键盘宏,同样支持高级的脚本插件功能。
2、界面设计:可视化的程序界面设计功能。
你所要产生的窗口,在设计期间就真实地出现,包括字体、颜色和定位。
比如:你不仅可以插入falsh的动画,而且无需运行,就直接可以在你的界面上看到该动画的演播,这是别的编程环境不能做到的。
3、程序编译:这是编程工具的主要功能。
我们写的代码在成为机器能懂的可执行程序时,必须通过编译。
4、程序调试:如何尽量减少你程序的BUG呢?没有编程集成环境提供的强大调试功能,我们做的程序将毫无质量保证。
5、代码优化:Borland 提供的编译器,不仅在编译速度上一直在美国屡获大奖,而且其代码自动优化功能一直领先对手几近一个时代。
使用编程集成环境,我们可以轻松获得更快更优的最终可执行程序文件。
6、辅助程序安装:程序的安装已属于另外一种工具的范畴,但我们仍可以通过编程集成环境来决定最终生成单一可执行文件,还是带有其它动态库。
如果是后者,我们还可以通过集成环境来检查程序运行时调用了哪些动态库文件。
C++Builder 提供的功能远不止我上面所说的,并不是因为我嘴笨,而是我认为对一个工具,你只有动手使用,才会真正了解它。
C++builder操作Excel⽅法(据⽹上资料整理)c++ builder 操作Excel⽅法,下⾯是从⽹上找到的⼀些不错的⽅法,学习⼀下:1⽤OLE操作Excel(⽬前最全的资料)(04.2.19更新)23本⽂档部分资料来⾃互联⽹,⼤部分是ccrun(⽼妖)在Excel中通过录制宏-->察看宏代码-->转为CB代码⽽来.本⽂档不断更新中.欢迎⼤家关注.45要在应⽤程序中控制Excel的运⾏,⾸先必须在编制⾃动化客户程序时包含Comobj.hpp67 #include "Comobj.hpp"89 C++ Builder把Excel⾃动化对象的功能包装在下⾯的四个Ole Object Class函数中,应⽤⼈员可以很⽅便地进⾏调⽤。
1011设置对象属性:void OlePropertySet(属性名,参数……);1213获得对象属性:Variant OlePropertyGet(属性名,参数……);1415调⽤对象⽅法:1) Variant OleFunction(函数名,参数……);16172) void OleProcedure(过程名,参数……);1819在程序中可以⽤宏定义来节省时间:2021#define PG OlePropertyGet2223#define PS OlePropertySet2425#define FN OleFunction2627#define PR OleProcedure2829举例:3031 ExcelApp.OlePropertyGet("workbooks").OleFunction("Add");3233可写为3435 ExcelApp.PG("workbooks").FN("Add");3637 C++ Builder中使⽤OLE控制Excel2000,必须掌握Excel2000的⾃动化对象及Microsoft Word Visual Basic帮助⽂件中的关于Excel的对象、⽅法和属性。
c++builder数据库开发经典案例解析目录1. 引言1.1 背景和意义1.2 结构概述1.3 目的2. 基本概念介绍2.1 C++Builder简介2.2 数据库开发概念与原理2.3 经典案例解析的重要性3. 经典案例1:学生信息管理系统3.1 实现思路和需求分析3.2 数据库设计与建模3.3 编码与功能实现细节4. 经典案例2:图书借阅管理系统4.1 实现思路和需求分析4.2 数据库设计与建模4.3 编码与功能实现细节5. 结论与展望5.1 主要研究结果总结5.2 存在的问题与改进方向提出引言1.1 背景和意义随着信息技术的飞速发展,数据库已成为各个领域中不可或缺的组成部分。
数据库开发是利用计算机系统进行数据管理和处理的关键任务之一。
而C++Builder作为一种强大而灵活的开发工具,广泛应用于软件开发领域。
本文将通过经典案例解析的方式,探讨C++Builder在数据库开发中的应用。
通过深入剖析两个经典案例:学生信息管理系统和图书借阅管理系统,我们可以了解到C++Builder在实际项目中的优势和应用方法。
1.2 结构概述本文将按照以下结构展开:•第一部分:引言。
介绍本文的背景、意义以及文章结构。
•第二部分:基本概念介绍。
对C++Builder和数据库开发的相关概念进行简要概括,并说明经典案例解析对于理解这些概念的重要性。
•第三部分:经典案例1:学生信息管理系统。
详细阐述该系统的实现思路与需求分析,以及数据库设计与建模过程,最后介绍编码与功能实现细节。
•第四部分:经典案例2:图书借阅管理系统。
类似地,我们将深入分析该系统的实现思路与需求分析,数据库设计与建模过程,并介绍编码与功能实现细节。
•第五部分:结论与展望。
总结本文的主要研究结果,并提出存在的问题和改进方向。
1.3 目的本文旨在通过对C++Builder数据库开发经典案例的解析,帮助读者理解C++Builder在实际项目中的应用。
通过学习这些经典案例,读者可以熟悉数据库开发的基本概念和原理,并掌握C++Builder在处理数据库相关操作时的技巧和方法。
C++Builder程序设计经验五则C++Builder程序设计经验五则夏登城---- 一、数据库程序设计---- Borland C++Builder与Delphi一样使用BDE(BorlandDatabase Engine)数据库接口,特别是它使用BDE Administrator统一管理数据库别名,使得数据库操作与数据库文件位置无关,从而使数据库开发更容易操作。
但在发布应用数据库程序时我们不得不同时“发布”BDE,对于一些简单的数据库程序来说,可能BDE比我们的自己设计的程序还大,而且如使用InstallShield配置BDE,添加数据库别名,很可能会配置失败。
所以我们可以采用如下方法:在程序设计阶段仍采用BDE管理数据库别名进行调试,但在程序初始化时(如在主窗体的OnCreate事件处理函数中)修改Table部件的DatabaseName属性,如使用类似如下语句:Table1->DatabaseName = ExtractFilePath(Application->ExeName);或Table1->DatabaseName= ExtractFilePath(Application->ExeName+”DB”);---- 这样,对调试阶段没有什么影响,发布应用程序时只要将Table1使用的数据库文件放在当前目录或其“DB”子目录下,数据库程序即可正常运行。
甚至您还可以将数据库文件所在目录以字符串形式写入注册表(可在安装程序中设置),然后在程序初始化时从注册表获取目录名,赋值给DatabaseName属性即可。
无论怎样,您不必强迫用户安装相对庞大的BDE了。
---- 二、注册表存取---- 在我们在设计Windows 9x/NT程序时经常需进行注册表信息的存取,如读取程序配置信息、保存配置信息等。
写一个注册表存取子程序就很有必要。
当需存取注册表时,直接调用此子程序即可,而不必每次都重复一些操作。
文章标题:C++ Builder 5高级编程实例精解一、C++ Builder 5高级编程实例概述C++ Builder 5是一个强大的集成开发环境,它能够帮助开发者快速而高效地构建Windows应用程序。
它结合了C++语言的强大性和可视化编程工具的便利性,为开发者提供了丰富的组件库和丰富的编程示例。
在本文中,我们将深入探讨C++ Builder 5高级编程实例,旨在帮助读者深入了解该环境下的高级编程技巧和应用实例。
二、C++ Builder 5高级编程实例解析1. 多线程编程实例在C++ Builder 5中,多线程编程是一个重要的高级技术,它能够提高程序的并发性和效率。
通过使用C++ Builder 5提供的多线程库,开发者可以轻松地实现多线程程序,并进行资源共享和同步控制。
可以利用多线程技术实现一个并发下载器,提高文件下载的速度和效率。
2. 数据库编程实例C++ Builder 5提供了丰富的数据库编程组件,使得开发者可以方便地连接数据库并进行数据操作。
利用这些组件,开发者可以实现诸如数据的增删改查等功能,并且可以轻松地构建数据驱动的应用程序。
可以利用C++ Builder 5实现一个简单的学生信息管理系统,实现学生信息的录入、查询和统计等功能。
3. 图形界面编程实例C++ Builder 5支持快速可视化界面设计,开发者可以通过拖拽和组件配置来实现丰富的用户界面。
借助C++ Builder 5提供的图形界面库,开发者可以实现各种图形效果和交互功能,使得应用程序更加美观和易用。
可以利用C++ Builder 5实现一个简单的绘图工具,实现各种图形的绘制和编辑功能。
三、总结与展望通过以上的C++ Builder 5高级编程实例解析,我们可以看到该环境下的丰富功能和灵活应用。
多线程编程、数据库编程和图形界面编程是C++ Builder 5中的核心技术,它们为开发者提供了丰富的编程资源和便捷的开发工具。
C++BuilderIDE使用技巧与快捷键1、快速选择Form在开发应用程序时,经常需要选中Form来改变Form的属性值或生成新的Form事件句柄。
有些时候,选择页面只需简单在页面上单击。
但更多的时候,页面总是完全被其上的组件所隐藏。
通过对象观察器(Object Inspector)顶端的下拉组合框来选择是一种解决办法。
但从下拉列表中找出form类并不容易,尤其在页面包含了大量的组件时。
IDE提供了选择form的快捷键。
如当一个Memo组件以client 方式充满了整个form的客户区域时。
要想选择form,只要在Memo 上单击,然后按下Esc键,就会选中form。
因为IDE将焦点转向了最初所选对象的父对象。
如有多个组件重叠。
多按几次Esc键后,就会选中form。
2、复选container(容器)中的组件Panel面板经常被用作其他组件的容器。
如要同时选中Panel面板上的几个组件来移动它们或是改变它们的共同属性。
一般可以通过Shift+单击来选择这些组件。
但如想通过拖动鼠标来选的话,只会将panel拖的到处乱跑。
按下Ctrl键再拖的话,就能选中后进行拖动。
这个办法适用于所有的容器类组件(GroupBox, ScrollBox, ControlBar,等等)。
3、微调组件选中一个组件后,按住Ctrl键再按下方向键(四个箭头)可以将组件往相应的方向以像素点为单位移动。
同时按住Shift 和 Ctrl键,再按一下方向键的话可以使组件移至下一个网格定位点。
要想组件往相应的方伸长或缩短一个像素点的话,按住Shift键再按方向键。
左右键调整组件宽度,上下键调整组件高度。
4、同时改变数个组件的属性当选择了多个组件时,对象观察器(Object Inspector)将会显示这些组件的共同属性。
如想让Form中的数个Edit组件都有同样的宽度的话,只需同时选中它们,然后在对象观察器中改变Width属性,所有您选中的组件宽度都会变成新的宽度值。
Cbuilder教程⼤全BorlandC++Builder5.0是Interpries(Borland)公司推出的基于C++语⾔的快速应⽤程序开发(RapidApplicationDevelopment,RAD)⼯具,它是最先进的开发应⽤程序的组件思想和⾯向对象的⾼效语⾔C++融合的产物。
C++Builder充分利⽤了已经发展成熟的Delphi的可视化组件库(VisualComponentLibrary,VCL),吸收了BorlandC++5.0这个优秀编译器的诸多优点。
C++Builder结合了先进的基于组件的程序设计技术,成熟的可视化组件库和优秀编译器,调试器。
发展到5.0版本,C++Builder已经成为⼀个⾮常成熟的可视化应⽤程序开发⼯具,功能强⼤⽽且效率⾼。
C++Builder的特⾊:1.C++Builder是⾼性能的C++开发⼯具C++Builder是基于C++的,它具有⾼速的编译,连接和执⾏速度。
同时,C++Builder具有双编译器引擎,不仅可以编译C/C++程序,还能编译ObjectPascal语⾔程序。
2.C++Builder是优秀的可视化应⽤程序开发⼯具C++Builder是⼀完善的可视化应⽤程序开发⼯具,使程序员从繁重的代码编写中解放出来,使他们能将注意⼒重点放在程序的设计上,⽽不是简单的重复的劳动中。
同时,它提供的完全可视的程序界⾯开发⼯具,从⽽使程序员对开发⼯具的学习周期⼤⼤缩短。
3.C++Builder具有强⼤的数据库应⽤程序开发功能C++Builder提供了强⼤的数据库处理功能,它使的程序员不⽤写⼀⾏代码就能开发出功能强⼤的数据库应⽤程序,这些主要依赖于C++Builder众多的数据库感知控件和底层的BDE数据库引擎。
C++Builder除了⽀持Microsoft的ADO(ActiveDataObject)数据库连接技术,还提供了⼀种⾃⼰开发的成熟的数据库连接技术——BDE(BorlandDatabaseEngine)数据库引擎。
c++builder调用VC的dll以及VC调用c++builder的dll解析__cdecl,__fastcall,__stdcall 的不同:在函数调用过程中,会使用堆栈,这三个表示不同的堆栈调用方式和释放方式。
比如说__cdecl,它是标准的c方法的堆栈调用方式,就是在函数调用时的参数压入堆栈是与函数的声明顺序相反的,其它两个可以看MSDN,不过这个对我们编程没有太大的作用---------------------------------------------------------------调用约定调用约定(Calling convention)决定以下内容:函数参数的压栈顺序,由调用者还是被调用者把参数弹出栈,以及产生函数修饰名的方法。
MFC支持以下调用约定:_cdecl按从右至左的顺序压参数入栈,由调用者把参数弹出栈。
对于"C"函数或者变量,修饰名是在函数名前加下划线。
对于"C++"函数,有所不同。
如函数void test(void)的修饰名是_test;对于不属于一个类的"C++"全局函数,修饰名是_test@@ZAXXZ (怎么感觉像乱码??)。
这是MFC缺省调用约定。
由于是调用者负责把参数弹出栈,所以可以给函数定义个数不定的参数,如printf 函数。
_stdcall按从右至左的顺序压参数入栈,由被调用者把参数弹出栈。
对于"C"函数或者变量,修饰名以下划线为前缀,然后是函数名,然后是符号"@"及参数的字节数,如函数int func(int a, double b)的修饰名是_func@12。
对于"C++"函数,则有所不同。
所有的Win32 API函数都遵循该约定。
_fastcall头两个DWORD类型或者占更少字节的参数被放入ECX和EDX寄存器,其他剩下的参数按从右到左的顺序压入栈。
用C++ Builder开发一个窗口信息读取程序1前言我们经常会遇到很多界面十分漂亮的软件,我们在惊叹其作者高超水平的同时,心中也不禁会想:自己怎样才能作出这样的界面呢 ?本文就从设计一个窗口信息读取程序入手,利用 C++Builder 适合于快速开发的特点,详细的介绍了其实现过程。
有了本程序,我们可以很轻松的去读取别人程序窗口中的各种信息,从中获取我们想要的信息。
2相关知识2.1句柄要想在程序中实现对其他程序窗口信息的读取,必须先获得对该窗口的控制权,在具体编程中,我们可以通过获取目标窗口的句柄来实现对该窗口的各种操作。
那么,何为句柄呢 ?从数据类型上看句柄是一个无符号整数, Win dows用它来标识窗体或其他对象,例如字体或位图。
Win dows分配给每个窗口一个唯一的句柄,通过句柄操纵该窗口。
通俗地说,句柄就像一把扇子的柄,一扇门的把手,只有通过柄和把手,我们才能顺利地控制扇子和门。
同理,当要操纵某一个窗口时,需要先获取该窗口的句柄。
获取窗口句柄的函数很多,较为常用的一个是WindowFromPoint,其用途是返回指定坐标下窗口的句柄。
该函数有一个参数,原型如下:HWND WindowFromPoint (POINT Point // 指定的坐标 ( 位置));// 如果成功函数返回指定坐标下窗口的句柄,否则返回 NULL通过以上函数,我们可以获得目标窗口的句柄,以便我们通过句柄对窗口进行操纵,从而读取目标窗口的各种信息。
2.2消息消息(Message)就是指 Windows操作系统发给应用程序的一个通知,告诉应用程序某个事情发生了。
从数据结构的角度看,消息是一个结构体,它包含了消息的类型标识符以及其他一些附加消息。
这样,接受消息的对象就能根据这个消息的标识符知道系统中发生了什么事情,并利用其附加信息作出适当的反应。
在本程序中,将使用到的消息有:(1)WM_GETTEXTLENGTH 当程序向目标窗口发送此消息后,将得到与该目标窗口有关的文本的长度 ( 不包含空字符 ) 。
C++Builder入门怎样在C++Builder中创建使用DLL自从C++Builder从去年浪漫情人节上市以来,吸引了大量的Delphi、VC、Vb的程序员到它的怀抱,大量的C、C++程序员感叹道:总算有了C的可视化开发工具,对我也是一样,从BC、Delphi到C++Builder。
动态链接库(DLL)是Windows编程常遇到的编程方法,下面我就介绍一下在BCB (C++Builder下简称BCB) 中如何创建使用DLL和一些技巧。
一、创建:使用BCB File|NEW建立一个新的DLL工程,并保存好文件BCB,生成一个DLL的程序框架。
1.DllEntryPoint函数为一个入口方法,如果使用者在DLL被系统初始化或者注销时被调用,用来写入对DLL的初始化程序和卸载程序;参数:hinst用来指示DLL的基地址;reason 用来指示DLL的调用方式,用于区别多线程单线程对DLL的调用、创建、卸载DLL;2.在程序中加入自己所要创建的DLL过程、函数;3.用dllimport描述出口;例程序如下:#include#pragma hdrstopextern 揅?__declspec(dllexport) int test();int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*){return 1;}int test(){return 3;}注意:动态链接库中调用过程、函数时有不同的CALL方式 __cdecl、 __pascal, __fastcall、__stdcall,BCB中默认的方式为__cdecl(可不写),如果考虑兼容性可用时__stdcall声明方法为:extern 揅?__declspec(dllexport) int __stdcall test();对于其中过程、函数也改为:int __stdcall test()二、使用DLL在BCB中使用DLL有两种方法:1.用静态调用法首先需要在BCB的项目中加入输入接口库(import library),打开工程项目,使用BCB View|Project Manager打开项目列表,向项目中加入接口库(*.lib)。