<转>记录一些BCB6的使用心得

简介: 源: http://blog.csdn.net/yejun52/article/details/3867561 自从2000年开始接触BCB,使用BCB作编程入门学习,一路走来,遇到了不少不大不小的问题。

源: http://blog.csdn.net/yejun52/article/details/3867561

自从2000年开始接触BCB,使用BCB作编程入门学习,一路走来,遇到了不少不大不小的问题。一晃9年过去了,BCB不再陌生,当初为问题困扰时那种手足无措的记忆也渐渐淡了。每念及此,甚有把一些心得写作文字的紧迫感。鉴于本人技术能力和文字水平之限,一直未能下决心,今天鼓起勇气做这事,好歹不论,只希望对使用BCB的后来者有些帮助。

1.       尽量将enum类型视为int类型使用

       VCL库中emun类型缺省1个字节大小,而VC中enum类型缺省4个字节大小。因此一旦遇到使用BCB编译可执行文件调用VC编译动态库中的某个函数,且该函数使用enum类型输入参数的情况,问题就来了。在32位PC平台上一次入栈数据最小为4个字节,可执行文件将emum类型参数压入堆栈的4个字节中实际仅1个字节有效,高位其他3个字节内容为随机值,而动态库函数执行过程中使用了4个字节数据内容。

   为避免发生上述问题,应该缺省将“Project”->“Options”->“Compiler”页面下的“Treat enum types as ints”项打勾。

2.       使用编译加速器bcc32pch

       大家都知道,BCB的那个编译速度真是慢如蜗牛,让人无法忍受。好在这世上总少不了活雷锋,使用BCB编译加速器bcc32pch一定不会你失望,她可以让BCB的编译速度提高3-5倍,工程规模越大,效果越是明显。最新版是2.79,赶紧去下载吧。下载地址是:http://andy.jgknet.de/blog/?page_id=12

3.       如何跨工程(Project)进行源码级调试

       在日常工作中,如何跨工程(Project)进行源码级调试这是个无法回避的问题。例如:一个应用程序工程为“prj_A”,一个动态库工程为“prj_B”,“prj_App”工程中使用“prj_B”工程创建的动态库,那如何在调试“prj_App”工程过程中自动进入“prj_B”工程源码呢?其实只要将“prj_B”工程目录下名为“prj_B.tds”(编译过程中生成)的文件复制到“prj_A”工程目录下即可。要注意的是,每次“prj_B”工程源码改动之后最好重新复制该文件,要不然调试过程中可能会出现源码行定位不准确问题。

4.       不要在动态库中使用ADO控件

       不要在动态库中使用ADO控件,实际上即使想用也用不了。微软原始的ADO ActiveX控件可没这个限制,Borland一封装就不行了。曾经看过ADO控件源码,发现内部包含检测实例模块是否为可执行文件模块的代码,如否则创建失败。至于为何这么做,没有细究。

5.       不要使用ExtractFileDir函数

       ExtractFileDir函数实现有bug。以下内容摘自季世平及(JSP)回复:这个函数,如果发现系统语言是远东的话,并且最后的目录名含有双字节文字(比如中文汉字)的话,且最后一个双字节文字的后面的引文数字字符个数为奇数时,才会发生这个问题。具体说,如果最后的目录名为"新建文件夹1","新建文件a夹1"之类的就会有问题,但如果是"新建文件夹12","新建文件a夹12"就不会有问题。

6.       命令行方式编译工程

       假如工程名为“prj_A”,新建一个文本文件,输入以下命令:

    bpr2mak -oprj_A.mak prj_A.bpr         

make -B -fprj_A

如果只需“make project”,而非“build project”,那么将移除“-B”选项即可。输入完毕保存文本,将文本文件后缀名改为“.bat”,双击该文件就可以看到效果了。更多选项功能,可以参考“Borland C++Builder Help”。

7.       如何彻底移除自带indy控件

       BCB自带indy控件版本过于陈旧,更多时候更好选择是安装新版本控件。安装新版本之前必须先卸载老版本控件,由于随BCB一起发布,卸载难度加大,不过还是有办法。按下面步骤一步步操作:

    a.运行BCB6,卸载indy控件包,选中“Project”->“Options”->“Packets”页面下indy控件包,单击“Remove”按钮卸载。

b.假如BCB安装目录是“C:/Program Files/Borland/C++Builder6”,在C:/Program Files/Borland/C++Builder6/Include/VCL目录删除所有“id”字符为首的hpp文件,在C:/Program Files/Borland/C++Builder6/Lib/obj目录分别删除dclindy.dcp、dclindy.dcu、indy.dcp、indy.dcu文件,在C:/Program Files/Borland/C++Builder6/Bin目录删除dclindy60.bpl文件,在C:/Windows/System32目录删除indy.bpl文件。

c.卸载干净,可以安装新版控件了。



用BC 编译时发现少了一个DCLUSR.LIB

Project->Edit OpitionSource打开工程源文件
找到并删除它就可以了

目录
相关文章
|
2月前
|
Go 开发工具 git
CF+hugo部署要点随记
本文介绍了使用Hugo搭建静态博客的方法,Hugo是一款用Go语言编写的静态站点生成器。文中详细描述了在Windows环境下安装Go、Git和Hugo的步骤,并提供了快速启动指南。此外,还介绍了如何通过Git子模块引入主题,以及如何在本地创建和编辑文章。最后,给出了常用Markdown语法示例,帮助用户轻松撰写博客内容。
66 5
|
17天前
【AD速成】半小时入门AltiumDesigner之创建工程(一)
【AD速成】半小时入门AltiumDesigner之创建工程(一)
|
6月前
|
存储 Linux Shell
【Linux】——期末复习题(十一)
【Linux】——期末复习题(十一)
|
算法 数据安全/隐私保护 芯片
快速入门数字芯片设计,UCSD ECE111(十一)Project的一些注意事项
快速入门数字芯片设计,UCSD ECE111(十一)Project的一些注意事项
131 0
|
安全 Unix Linux
【方向盘】达到Linux第三阶段的常用命令笔记记录---Part Ⅱ(上)
【方向盘】达到Linux第三阶段的常用命令笔记记录---Part Ⅱ(上)
【方向盘】达到Linux第三阶段的常用命令笔记记录---Part Ⅱ(上)
|
缓存 NoSQL 前端开发
【方向盘】达到Linux第三阶段的常用命令笔记记录---Part Ⅱ(下)
【方向盘】达到Linux第三阶段的常用命令笔记记录---Part Ⅱ(下)
【方向盘】达到Linux第三阶段的常用命令笔记记录---Part Ⅱ(下)
|
域名解析 缓存 监控
【方向盘】达到Linux第三阶段的常用命令笔记记录---Part Ⅱ(中)
【方向盘】达到Linux第三阶段的常用命令笔记记录---Part Ⅱ(中)
【方向盘】达到Linux第三阶段的常用命令笔记记录---Part Ⅱ(中)
biostar handbook: 第七周笔记汇总+调整通知
随着第七周的结束,biostar handbook就已经学习了12章。全书总共26章,也就是说到目前为止,全书已经学习了一半。当然,很可惜的是并没有很多人能够坚持写作业,一部分原因是即便是一周2章的节奏对于初学者可能也是太难了,一部分原因是他在参加之后就潜水不见了。
922 0