C++ builder
觉远大师傅
喜欢这句话:生命不止奋斗不息! 无论何时 无论成败 都支持国足!
展开
-
C++ builder生成的程序出现缺少rtl120.bpl的问题!
BCB6解决方案: 菜单:project->option linker 中use dynamic rtl前边的对号去掉 packages中build with runtime packages中的对号去掉 BCB2009解决方案: Project-->Options-->右侧顶部的Build Configuration选择"Release"-->左侧导航树中选"C++ Linker"-->右侧的面板中将Dynamic RTL原创 2010-06-29 09:06:00 · 4689 阅读 · 0 评论 -
WaitForSingleObject的用法
<br />WaitForSingleObject的用法DWORDWaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds );<br />参数hHandle是一个事件的句柄,第二个参数dwMilliseconds是时间间隔。如果时间是有信号状态返回WAIT_OBJECT_0,如果时间超过dwMilliseconds值但时间事件还是无转载 2010-09-26 17:13:00 · 546 阅读 · 0 评论 -
_beginThreadex的用法
小光和Kimi建议创建线程应该用_beginThreadex,ripple里面就是用的这个。花了老半天才把createThread改成_beginThreadex,例子如下://sipvoiplink.hclass SIPVoIPLink{private: static unsigned __stdcall ReceivingThrd(void * pParam);}//sipvoiplink.cpp#include #include bool SIPVoIPLink::init(){.....转载 2010-09-26 17:23:00 · 13165 阅读 · 0 评论 -
为何要用_beginthreadex()而非CreateThread?
<br />当你打算实现一个多线程(非MFC)程序,你会选择一个单线程的CRT(C运行时库)吗?如果你的回答是NO, 那么会带来另外一个问题,你选择了CreateThread来创建一个线程吗? 大多数人也许会立刻回答YES。可是很不幸,这是错误的选择。<br />我先来说一下我的结论,待会告诉你为什么。<br />如果要作多线程(非MFC)程序,在主线程以外的任何线程内<br />- 使用malloc(),free(),new<br />- 调用stdio.h或io.h,包括fopen(),open(),g转载 2010-09-27 09:01:00 · 1004 阅读 · 0 评论 -
access violation at address
<br />Windows用户可能经常会看到类似于错误提示:“Error:Access violation at address 836556F8. Read of address 836556F8”。作为一个Delphi程序开发者,遇到这种错误的机会比其他用户更多(^_^)。<br /> 究竟什么是“Access Violation”?如何在设计期避免它的出现? <br /> Access Violation(非法访问),General Protection Fault(一般保护性错误)或者Inval转载 2010-10-09 10:56:00 · 2650 阅读 · 0 评论 -
_endthreadex内存泄露的问题
<br />☆──────────────────────────────────────☆<br /> yixin (@_@) 于 2009年09月18日11:00:47 星期五)<br /> 提到:<br /><br />代码:<br />#include <string><br />#include <process.h><br />#include <windows.h><br />#include <iostream><br />using namespace std;<br /><br转载 2010-10-09 09:40:00 · 8270 阅读 · 0 评论 -
记录使用BCB6出现的问题
<br />1、external exception c0000008 <br /> 出现这个问题是因为串口打开后在程序的不同位置又执行了两遍关闭串口的函数,<br /> 在执行第二个关闭串口的函数时句柄已经无效!<br />2、access violaction at 0x******<br /> 调试程序的时候,退出程序会出现这个提示。原因是程序里有个线程在不断的与数<br /> 据库交互,所以在退出时有些变量还没来得及释放从而产生泄漏!<br />原创 2010-10-15 13:52:00 · 957 阅读 · 0 评论 -
Windows多线程编程
<br />Windows多线程编程 1、进程与线程 <br />进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动。<br />进程是系统进行资源分配和调度的一个独立单位.。<br />而线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。<br />线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.。<br />简单来说就是多任务操作系统下,一个程序至转载 2010-11-01 11:24:00 · 674 阅读 · 0 评论 -
使用 C++ 和 MFC 进行多线程编程
<br />Microsoft 基础类 (MFC) 库提供多线程应用程序支持。本主题描述进程、线程和 MFC 多线程编程方法。<br />进程是应用程序的执行实例。例如,双击“记事本”图标时,将启动运行“记事本”的进程。<br />线程是进程内的执行路径。启动“记事本”时,操作系统创建进程并开始执行该进程的主线程。此线程终止时,进程也终止。启动代码以函数地址的形式将此主线程提供给操作系统。通常是所提供的 main 函数或 WinMain 函数的地址。<br />如果愿意,可以在应用程序中创建其他线程。如果在转载 2010-11-01 15:05:00 · 779 阅读 · 0 评论 -
使用 C 和 Win32 进行多线程编程
<br />使用 C 和 Win32 进行多线程编程<br />线程实质上是程序中的执行路径。也是 Win32 安排的最小执行单元。线程包括堆栈、CPU 寄存器的状态和系统计划程序执行列表中的项。每个线程共享所有进程的资源。<br />进程包括一个或多个线程和代码、数据和内存中的其他程序资源。典型的程序资源是打开的文件、信号灯和动态分配的内存。当系统计划程序给予其中的一个线程执行控制时,即执行程序。计划程序确定应当运行哪些线程以及它们应当何时运行。较低优先级的线程可能必须等到较高优先级的线程完成任务后才能运转载 2010-11-01 15:05:00 · 710 阅读 · 0 评论 -
#pragma hdrstop 的真实含义!
<br />#pragma hdrstop<br /> 表示将这语句之前的头文件的预处理内容都缓存在.csm文件(BCB的)中,这样可以加快下次的预处理速度;以后每次编译前进行预处理操作时,只要这些头文件没有被修改就直接从缓冲文件中加载内容而不需要重新预处理它(默认都要重新预处理)。在BCB的Project->Options->Compiler中可以设置,一般为$(BCB)/lib/vcl60.csm,同时还有*.#01 *.#02等临时文件生成,。<br /> <br />本文来自: (www.91转载 2010-11-02 17:15:00 · 790 阅读 · 0 评论 -
CreateThread
<br />简介<br /> 微软在Windows API中提供了建立新的线程的函数CreateThread, <br />概述<br /> 当使用CreateProcess调用时,系统将创建一个进程和一个主线程。CreateThread将在主线程的基础上创建一个新线程,大致做如下步骤: <br />1、在内核对象中分配一个线程标识/句柄,可供管理,由CreateThread返回 <br />2、把线程退出码置为STILL_ACTIVE,把线程挂起计数置1 <br />3、分配context转载 2010-09-26 17:15:00 · 2218 阅读 · 0 评论 -
C++ Builder读写INI文件(转载)
C++ Builder读写INI文件(转载)2008-10-15 17:15<br />C++代码<br /> __fastcall TForm1::TForm1(TComponent *Owner) : TForm(Owner) { TIniFile *ini; ini = new TIniFile( ChangeFileExt( Application->ExeName, ".INI" ) ); Top = ini->Rea转载 2010-09-15 10:02:00 · 1448 阅读 · 0 评论 -
关于TStringGrid控件使用!
如果想改变行或者列的尺寸1、可以用程序改变 2、用鼠标拖动的形式改变:首先要让控件有边框才能让鼠标选中FixedCols/FixedRows = 1 options->goRowSizing/goColSizing = true选中整行:option->goRowSelect原创 2010-09-01 15:03:00 · 1088 阅读 · 0 评论 -
Victor控件
<br />使用简单:<br />用 控件->Active=true; 打开串口<br />控件->Read()读, 控件->Write()写.<br />可以处理控件的事件, 但不是必须的.<br />控件安装方法 (这个方法适用于所有VCL控件):<br />1.BCB 菜单: Project->Options->Packages->Add<br />如果是BCB6: 选择安装的文件夹 yb_base_c6.bpl 和 yb_comm_c6.bpl, 然后按“打开”按钮<br />如果是BCB5: 选择原创 2010-07-01 17:55:00 · 1079 阅读 · 0 评论 -
略谈DELPHI+Flash组合下多媒体CAI开发的特性与技巧(转)
<br />提纲:<br />一、windows平台下最优多媒体制作工具组合DELPHI+FLASH<br />1、基于脚本的多媒体编辑工具<br />2、基于流程的多媒体编辑工具<br />3、基于时序的多媒体编辑工具<br />4、基于可视化编程语言的编辑软件<br />二、Delphi+Flash平台实现多媒体CAI制作的一些新特性<br />1、 交互界面的实现<br />2、 图像过渡的实现<br />3、 Gif、AVI、MOV、MP3、Mpeg等多媒体元素的引用<br />4、 MsAgent转载 2010-07-12 09:17:00 · 2213 阅读 · 0 评论 -
Delphi与Flash之间的数据传递
要实现这一功能,首先要用到ActiveX控件中的TShockwaveFlash控件。首先让我们来将TShockwaveFlash控件加入到Delphi的组件面板中(没有装Flash的朋友可以从网上下载一个Flash8.ocx文件来进行安装)1.打开Delphi(本人用的是Delphi7.0)点击菜单中的Component->Import ActiveX Control...2.在弹出的窗口中的Import ActiveX子窗口中找到Shockwave Flash(Version1.0),然后点击Instal转载 2010-07-12 08:46:00 · 1019 阅读 · 0 评论 -
CreateThread用法
<br />HANDLE CreateThread(<br />LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to security attributes<br />DWORD dwStackSize, // initial thread stack size<br />LPTHREAD_START_ROUTINE lpStartAddress, // pointer to thread fu转载 2010-07-22 14:07:00 · 1397 阅读 · 0 评论 -
BCB2009 动态调用VC生成的DLL
<br />1、先声明DLL中将需要的函数:<br /> 如:typedef int (__stdcall *Impact_FeedLine)(HANDLE hPort,int nPortType);<br />2、HINSTANCE handle; //声明句柄<br /> handle = LoadLibrary("ImpactDLL.dll");<br /> Impact_FeedLine lpLine;<br /> FARPROC lpFarLine;<br />原创 2010-06-13 15:37:00 · 649 阅读 · 0 评论 -
CMarkup 使用概述(1)
<br />创建一个新的XML文档,分析修改现存的XML文档,所有的这些都中可以从一个利用MFC或STL字符串所实现的一个简单类的方法中得到。关于CMarkup,你可以运行Zip文件右边的例子,如果你愿意,你可以通过看源码,几分钟把它加入到你自己的应用中。<br /> <br />特征<br />Cmarkup是依据EDOM的,这是这个简单XML分析的关键。EDOM是操作XML元素、属性和数据的简明方法集。当你不需要复杂的XML特性时,它避免你读大量的DOM和SAX文档。<br />如果你希望使用微软的MS转载 2010-08-11 13:33:00 · 713 阅读 · 0 评论 -
memmove和memcpy研究
<br />1.memmove<br />函数原型:void *memmove(void *dest, const void *source, size_t count)<br />返回值说明:返回指向dest的void *指针<br />参数说明:dest,source分别为目标串和源串的首地址。count为要移动的字符的个数<br />函数说明:memmove用于从source拷贝count个字符到dest,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标转载 2010-06-22 11:01:00 · 399 阅读 · 0 评论 -
Delphi BCB提示信息框(MessageBox)的应用
<br />应用程序中的提示信息处理程序是非常出重要的部分,用户要知道他输入的资料到底正不正确<br /><br />,或者是应用程序有一些提示信息要告诉用户,都必须通过提示信息处理程序来显示适当的信息,<br /><br />让用户了解下一步该如何配置。提示信息有很多种类,包括警告,错误,提示,确认,重试等。不<br /><br />同种类的提示信息框适合用在各种不同的情况。<br /><br /> 在C++Builder中开发提示信息框只须调用MessageBox这个信息提示框函数就行,下面就是这个<转载 2010-08-19 09:48:00 · 1002 阅读 · 0 评论 -
MessageBox用法
<br />一、关于MessageBox<br /> 消息框是个很常用的控件,属性比较多,本文列出了它的一些常用方法,及指出了它的一些应用场合。<br /> 1.MessageBox("这是一个最简单的消息框!");<br /> 2.MessageBox("这是一个有标题的消息框!","标题"); <br /> 3.MessageBox("这是一个确定 取消的消息框!","标题", MB_OKCANCEL ); <br /> 4.Message转载 2010-09-10 09:41:00 · 682 阅读 · 0 评论 -
记录:将得到的字符串转成16进制
<br />如:char tmp[]="4698e5be9de99544";<br /> 转为{0x46, 0x98, 229, 0xbe, 0x9d, 0xe9, 0x95, 0x44};<br /> <br />int AscToInt(char src)<br />{<br /> char str[8];<br /> if(src=='a' || src=='A')<br /> return 10;<br /> else原创 2010-08-31 10:16:00 · 669 阅读 · 0 评论 -
记录几个小函数!
<br />//------------------------------------------------------------------------------<br />/*! @function<br />********************************************************************************<br /><PRE><br />函数名 : divideString<br />功能 : 将字符串中的-换成逗号 <b原创 2011-01-21 14:14:00 · 440 阅读 · 0 评论