关于如何在BCB中使用CodeGuard
一、 为什么写这篇东西 自己在使用 BCB5 写一些程序时需要检查很多东西,例如内存泄漏、资源是否有释放等等,在使用了很多工具后,发觉 BCB5 本身自带的工具—— CodeGuard ,非常不错,使用也挺方便的,但是摸索了很久(以及翻查了一些资料,包括 HELP )才算是会用了。写这篇文章的目的希望有这方面的问题的朋友可以借鉴一下,大家互相学习,共同进步。我的联系方法: Email : szbug@szbug.com ,希望志同道合的朋友来信互相交流。以下这篇文章算是拼凑出来的一篇文章,一些资料是在书...
常用的BCB Delphi 函数
翻译的不好,请见谅。 翻译:鲁小班 文件: ActnList CreateAction 函数 创建一个指定类型的Action,显示在action list editor中。 EnumRegisteredAction 过程 枚举已经注册的Action RegisterAction 过程 注册Action UnRegisterAction 过程 反注册Action 文件: Classes Bounds 函数 输入上下高宽返回一个矩形结构。 CollectionsEqual 函数 比较两个TCollectio...
关于MD5的一些知识
MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。 Message-Digest泛指字节串(Message)的Hash变换,就是把一个任意长度的字节串变换成一定长的大整数。请注意我使用了“字节串”而不是“字符串”这个词,是因为这种变换只与字节的值有关,与字符集或编码方式无关。 MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换...
C/C++英/中 繁/简编程术语对照
以下是侯捷个人收集到的 C/C++ 编程方面的术语对照。请大陆朋友给我一些意见,尤其是标示 '?' 之栏位。谢谢。 两岸朋友,如果您想到哪些术语尚未列入本表,请提示我,谢谢。 新书写作时,我会以此表为叁考。 ●英中繁简编程术语对照 英文 台湾惯用术语 大陆惯用术语 --------------------------------------------------------------------------------------- abstract 抽象的 抽象的 abstraction 抽象体、...
Unicode:宽字节字符集
1. 如何取得一个既包含单字节字符又包含双字节字符的字符串的字符个数? 可以调用Microsoft Visual C++的运行期库包含函数_mbslen来操作多字节(既包括单字节也包括双字节)字符串。 调用strlen函数,无法真正了解字符串中究竟有多少字符,它只能告诉你到达结尾的0之前有多少个字节。 2. 如何对DBCS(双字节字符集)字符串进行操作? 函数 描述 PTSTR CharNext ( LPCTSTR ); 返回字符串中下一个字符的地址 PTSTR CharPrev ( LPCTSTR,...
玩转BCB的IDE 体验ToolsAPI
大多数BCB程序员也许一辈子都不用关心Toolsapi,但如果象我一样无聊的话, 不妨玩玩和讨论一下: 看看下面的程序,来把IDE变个样: ---BCB5。0 //--------------------------------------------------------------------------- #include vcl.h #pragma hdrstop USERES("nodebug.res"); USEPACKAGE("vcl50.bpi"); //---------------...
如何让TList类型安全
在VCL中包含有一个TList类,相信很多朋友都使用过,它可以方便的维护对象指针,所以很多朋友都喜欢用它 来实现控件数组。不幸的是,这个TList类有一些问题,其中最重要就是缺乏类型安全的支持。 这篇文章介绍如何从TList派生一个新类来实现类型安全,并且能自动删除对象指针的方法。 TList的问题所在 对于TList的方便性这里就不多说,我们来看一下,它到底存在什么问题,在Classes.hpp文件中,我们可以看到函数的原型是这样申明的: int __fastcall Add(void * Item)...
C++基础之理解inline化的介入和排除
inline 函数——多么棒的主意啊!它们看起来像函数,它们产生的效果也像函数,它们在各方面都比宏好得太多太多,而你却可以在调用它们时不招致函数调用的成本。你还有什么更多的要求呢? 实际上你得到的可能比你想的更多,因为避免函数调用的成本只是故事的一部分。在典型情况下,编译器的优化是为了一段连续的没有函数调用的代码设计的,所以当你 inline 化一个函数,你可能就使得编译器能够对函数体实行上下文相关的特殊优化。大多数编译器都不会对 "outlined" 函数调用实行这样的优化。 然而,在编程中,就像在生...
C++基础之确保公开继承模拟“is-a”
在 Some Must Watch While Some Must Sleep (W. H. Freeman and Company, 1974) 这本书中,William Dement 讲述了一个他试图让他的学生的记住他的课程中最重要的东西的故事。书中声称,他告诉他的班级,一般的英国中小学生对于 1066 年发生的 Hastings 战争的历史并没有什么了解。他着重强调,如果一个孩子记住了一点儿什么的,他或者她也就是记住了 1066 这个年代。对于上他的课程的学生,Dement 滔滔不绝地讲,其中只有...
如何关闭除自己程序外的所有其他应用程序
获得当前激活的进程: 1:包含头文件tlhelp32.h 2:.cpp如下: ListView2-Items-Clear(); TListItem *mItem; AnsiString ExeFile; Pointer pt,pt2; unsigned int s; DWord size,size2; HANDLE snapshot; PROCESSENTRY32 processinfo; processinfo.dwSize = sizeof(processinfo); snapshot = Crea...
在单独线程中执行对象成员函数
问题的提出: 实际上所有线程都是用来处理C函数的,而不是C++类成员函数。标准库中提供一个API函数,这个函数以回调函数指针作为线程的执行代码并在单独的线程中调用回调函数。问题是在这样的线程库中不能创建执行对象成员函数的线程;只能使用普通的函数。因此,下列代码是失败的: // 启动线程库函数的线程 int thr_create (void (*pf)(), void* prm, thread_t* pth); #include "class1.h" int func (void *param ) { t...
C++编程基础之赋值操作符
虽然上篇已经说明了变量是什么,但对于变量最关键的东西却由于篇幅限制而没有说明,下面先说明如何访问内存。 赋值语句 前面已经说明,要访问内存,就需要相应的地址以表明访问哪块内存,而变量是一个映射,因此变量名就相当于一个地址。对于内存的操作,在一般情况下就只有读取内存中的数值和将数值写入内存(不考虑分配和释放内存),在C++中,为了将一数值写入某变量对应的地址所标识的内存中(出于简便,以后称变量a对应的地址为变量a的地址,而直接称变量a的地址所标识的内存为变量a),只需先书写变量名,后接“=”,再接欲写入的...