C++Builder6
chinayu2007
这个作者很懒,什么都没留下…
展开
-
C语言结构体对齐
看了钱老师的C语言课,他讲的比较全面。说明我以前只是一知半解。原创 2024-06-20 16:33:49 · 121 阅读 · 1 评论 -
获取本机IP地址
【代码】获取本机IP地址。原创 2022-09-15 11:56:55 · 461 阅读 · 0 评论 -
C++Builder发送电子邮件
C++Builder发送电子邮件。原创 2022-07-15 17:59:48 · 1141 阅读 · 0 评论 -
鼠标在控件上的偏移值
当鼠标在控件上点击时,想知道鼠标在控件上的位置,相对控件Left和Top偏移了多少像素 TPoint Pos1 = Mouse->CursorPos;//鼠标光标当前坐标 //将控件在窗体上的坐标转为屏幕坐标 //注意如果控件被包含在其他容器内,需要累加容器的坐标 TPoint p(Button9->Left,Button9->Top); TPoint Pos2 = ClientToScreen(p); int cy = Pos1.x - Pos2.x;/原创 2022-04-09 10:07:49 · 450 阅读 · 0 评论 -
十六进制字符串转成整数
char *pEnd;//字符串中的结束字符long ret = strtol("41",&pEnd,16);//十六进制字符串41转数值//ret为65strtol会扫描字符串,跳过空格开头的字符串,遇到数字和正负符号开始转换,直到遇到字母或\0结束转换。第二个参数是指定主动结束的字符,即遇此字符结束转换。第三个参数是进制,十六进制就是16。...原创 2022-04-08 09:44:26 · 1662 阅读 · 0 评论 -
接收函数返回的二维字符数组
int cnt = 0;//返回字符串数组的行数 //函数内部定义形如char a[][15]二维数组 //初始化char a[][15]={"abc","hello","world"}; char ** p = GetAllYbName(cnt);//获取字符串数组指针, //第一种方法: char rec[21][15]={0}; //预定义足够大的二维数组 memcpy(rec,p,cnt*15); //复制数据 for(int i=0...原创 2022-03-31 18:52:32 · 619 阅读 · 0 评论 -
TFont字体的Height
字型的Height是指字型不包括内部铅框的高度,用像素表示。C++Builder中用下面的公式计算Height的属性值:Font->Height = -Font->Size * 72 /Font->PixeIsPerInch当在Height属性中中输入正值时,Size属性是负值。反之当Heigth属性输入负值时,Size属性是正值。一个正的Height值,表示包含内部铅框,而负的Height值,则不包括。...原创 2022-01-19 19:27:28 · 959 阅读 · 0 评论 -
C++Builder智能指针
#include <memory>void __fastcall TForm1::Button1Click(TObject * Sender){ std::auto_ptr<TButton>foo(new TButton(Form1)); foo->Caption = "this Be a Test"; MessageBox(NULL,foo->Caption.c_str(),"提示",MB_OK);}原创 2022-01-19 19:09:16 · 606 阅读 · 0 评论 -
类中的static,const,static const成员初始化
class TSoftWareInfo{ public: const char * SoftwareName; //参数列表中初始化 static int Year; //类外初始化 static const char * Copyright; //类外初始化 static const int Buff[100]; //类外初始化 static const char c = '1'; //.原创 2021-11-23 21:32:33 · 277 阅读 · 0 评论 -
C++builder中的Format函数
AnsiString str1 = Format("%d%s",OPENARRAY(TVarRec,(120,"hello") ) );ShowMessage(str1);原创 2021-10-30 15:39:49 · 524 阅读 · 0 评论 -
环循数组读取
int c=5; //容量AnsiString a[5]={"G10","G10A","G10.4G","G20","G20.4G"}; //模拟环形区int i = 0;//不断单击按钮,在数组a中循环访问各元素void __fastcall TForm1::Button1Click(TObject *Sender){ Label1->Caption = "第"+AnsiString(i+1)+"个元素:"+a[i++%c]; i=(i==c)?0:i;}...原创 2021-10-15 17:31:01 · 138 阅读 · 0 评论 -
wchat_t存储一个汉字并显示
wchar_t d = L'中'; WideString str = WideString(d); ShowMessage(str);原创 2021-09-17 17:10:05 · 263 阅读 · 0 评论 -
拼音获取汉字
struct stChineseTable{ char szIndex[10]; char szChinese[300];};struct struct_PY_HZ_DB{ char cLetter; int nCount; struct stChineseTable arrStChinese[50];};extern const struct struct_PY_HZ_DB PY_HZ_DB[23];const struct struct_PY_HZ_DB P.原创 2021-09-16 16:14:48 · 151 阅读 · 0 评论 -
从EXE文件的版本信息中获取指定的信息
AnsiString GetFileVerInfo(AnsiString strKey){//从exe的版本信息中获取指定的信息 TDateTime dt; //要获取版本的文件 char *ExeName = ParamStr(0).c_str(); DWORD dwHandle; //得到版本信息大小 DWORD n = GetFileVersionInfoSize(ExeName, &dwHandle); if (n > 0) { .原创 2021-06-30 16:28:34 · 243 阅读 · 0 评论 -
获取EXE文件的版本号
AnsiString GetFileVer(){//获取本程序版本号 DWORD dwHandle; UINT unCurLen; AnsiString strVer; char lpFileVer[30]={0}; String strFileName=Application->ExeName; DWORD dwVerLen=GetFileVersionInfoSize(strFileName.c_str(),&dwHandle);.原创 2021-06-30 16:16:54 · 497 阅读 · 0 评论 -
连接Access2007数据库
C++Builder中连接Access2007数据库,如下:上述代码是用TADOConnection连接数据库,也可以直接使用TADOQuery的连接字符串属性。原创 2021-05-22 16:22:33 · 419 阅读 · 0 评论 -
TrackMouseEvent处理鼠标消息
当鼠标在按钮上,按钮可以响应鼠标移动,点击,进入,离开消息。有一个特殊情况,就是按钮处理窗口边缘时,鼠标离开按钮,进入系统其他界面,而不是按钮所在窗口时,就不能响应离开CM_MOUSELEAVE消息。//.h文件bool m_bTrackingMouse; //检测鼠标是否离开标志protected: BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(CM_MOUSELEAVE, TMessage, MouseLeave) VCL_MESSAG原创 2021-05-21 10:28:08 · 498 阅读 · 1 评论 -
c++builder中的字符串分隔处理
c语言中通常用strstok函数进行字符串分隔处理。在C++builder有专用的函数来处理。如下: TStringList* lst = new TStringList; String strSource = "0x21,0x72,0x03,0x04"; TSysCharSet Separators,WhiteSpace; //分隔符,可以指定多种同时使用 Separators <<','; //删除每个字段中.原创 2021-05-18 16:13:26 · 1049 阅读 · 0 评论 -
获取文件版本信息
修改了c++builder帮助文件的例子,原例子不完整,编译不能通过。const AnsiString InfoStr[10] = {"CompanyName", "FileDescription", "FileVersion", "InternalName", "LegalCopyright", "LegalTradeMarks", "OriginalFileName", "ProductName", "ProductVersion", "Comments"};//要获取版本的文件char *.原创 2021-05-18 14:42:39 · 310 阅读 · 0 评论 -
获取文件修改时间
获取文件修改时间,包括当前运行的exe程序自身的修改时间,代码如下:TDateTime TForm5::GetFileTime(String sFilename, int TimeType){ //TODO: Add your source code here WIN32_FIND_DATA ffd; WORD fd,ft; DWORD fdt; FILETIME lft,Time; HANDLE H; H = FindFirstFile(sFilenam原创 2021-05-02 12:49:00 · 943 阅读 · 0 评论 -
调用资源中的字体文件
如果不是系统自带的字体,程序想在运行时使用,但又不想将字体文件安装到系统中。如何处理呢?步骤如下:(1)获取字体文件,如阿里的iconfont,可以将图标字体文件下载下来,并查看html中的unicode码。(2)将字体文件生成资源文件,编译到exe文件中去。如字体文件名为f.ttf,已放在当前工程的res文件夹中。用记事本,编写如下内容,保存为1.rcF1 BINARY "\res\iconfont.ttf"将1.rc添加到工程中,会生成res文件,且会被编译到exe文件中去。(3)调...原创 2021-04-29 10:48:42 · 1115 阅读 · 0 评论 -
去掉小数点后多余的0
去掉小数点后,多余0,没有函数处理。因为采用字符串处理,如下:AnsiString TForm5::GetNotZero(float value){ AnsiString formatValue = AnsiString().sprintf ("%0.3f",value); int point = formatValue.Pos("."); for(int i=formatValue.Length();i>0;i--) { if(i >=原创 2021-04-03 10:46:02 · 3925 阅读 · 0 评论 -
在字符串中寻找连续数字子串正则式
要在字符串中(包含中文,英文,数字)寻找出连续数字符串,可用正则表达式实现,如下:#include <regexp.h>AnsiString TForm1::GetDigtal(AnsiString strSource){ char szReg[]="[0-9]+";//正则表达式,表示一个或多个'0'到'9'的字符串 char szStr[20]={0};//待匹配的字符串 strcpy(szStr,strSource.c_str()); std::原创 2021-03-31 17:30:05 · 1132 阅读 · 0 评论 -
禁止TTreeView双击或单击展开折叠
TTreeView控件的名称为tvAreaManage,定义一个bool成员变量:m_bAllow,代码如下:void __fastcall TForm1::tvAreaManageCollapsing(TObject *Sender, TTreeNode *Node, bool &AllowCollapse){ AllowCollapse = m_bAllow;}//-----------------------------------------------原创 2021-03-08 11:18:59 · 794 阅读 · 0 评论 -
c++builder 编译lua动态库
参考了网上的资料,重新编译lua库,版本为lua-5.4.2,makefile文件内容如下:# Makefile for Borland C++ 5.5# usage:# build lua with dll: make -f makefile.bcc# build lua with static library: make -f makefile.bcc -DSTATIC# write by: Mao yongjun (mao_yj@msn.com)原创 2021-02-15 17:01:52 · 294 阅读 · 0 评论 -
DLL导出类共享内存
创建一个DLL工程,在cpp中添加如下代码://---------------------------------------------------------------------------#pragma option -zRSHSEG //改变缺省数据段名SHSEG#pragma option -zTSHCLASS //改变缺省数据类名SHCLASS#include <vcl.h>#include <windows.h>#pragma hdrstop/原创 2021-02-12 17:31:50 · 418 阅读 · 0 评论 -
在DLL中包含窗体
在DLL中如何包含窗体,C++Builder6中方法如下:(1)先包含接口文件,这是各个DLL中需要实现的功能,并在主窗口中调用这些接口。#ifndef IDLLControlHPP#define IDLLControlHPP//DLL中的基本接口类,窗口消息处理须继承此类class IDLLObject{public: virtual void __fastcall Initialize(Forms::TApplication* AApp) = 0 ; virtua原创 2021-01-23 13:54:02 · 1150 阅读 · 0 评论 -
中文乱码转换
采用CJsonObject处理中文时,直接显示为乱码,转为以下两个函数,可以解决。std::string string_To_UTF8(const std::string& str){ int nwLen = ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0); wchar_t* pwBuf = new wchar_t[nwLen + 1]; //一定要加1,不然会出现尾巴 ZeroMemor.翻译 2021-01-11 18:34:25 · 3863 阅读 · 0 评论 -
TIdHttp控件实现post提交
TStringStream * ms;char * lpBuf;TStringList * pParam;try{ //http路径 AnsiString g_Url= m_httpPath+"Basic/SJG/CheckLogin"; //接收返回值 ms = new TStringStream(""); //参数,json格式 pParam = new TStringList(); pParam->Add("{\"LoginName\":2012.原创 2021-01-11 16:34:09 · 817 阅读 · 0 评论 -
TADOQuery 关联两张表
TADOQuery 关联两张表,实现两张表联动(1)分别准备两组TADOQuery,TDataSource,TDataGrid控件,并关联,两个TADOQuery都要指定连接数据库字符串(2)将第一组作为主表,第二组SQL属性为:select T.BangDanLiuShuiHao,C.ChePaiHaofrom CheLiangInf C,TotalRecord T where C.ChePaiHao = :ChePaiHao(3)两张表都有相同的字段,如ChePaiHao,第一组将自动为参数赋原创 2020-10-20 11:29:07 · 245 阅读 · 0 评论 -
TStringList的使用方法
TStringList * p = new TStringList(); p->Add("a=hello");//以key和value形式添加字符串,用=分隔 ShowMessage(p->Names[0]);//以索引的形式获取key值 ShowMessage(p->Values["a"]);//以key的形式,获取对应的value值 delete p;...原创 2020-10-19 15:28:40 · 507 阅读 · 0 评论 -
_beginthead函数创建线程
//---------------------------------------------------------------------------#include <vcl.h>#include <stdio.h>#include <errno.h>#include <stddef.h> /* _threadid variable */#include <process.h> /* _beginthread, _e.原创 2020-10-10 10:47:05 · 235 阅读 · 0 评论 -
C++builder调用CnActiveScript脚本组件
在cnPack中找到CnActiveScript的源码,在C++builder中调用//创建一个窗口工程,窗口头文件//---------------------------------------------------------------------------#ifndef mainUnitH#define mainUnitH//---------------------------------------------------------------------------#i原创 2020-09-26 18:07:24 · 182 阅读 · 0 评论 -
C++builder正则表达式
如果在要限输入框控件的内容为6位数字,可以用正则式以判断.代码如下:#include <pcre.h>void __fastcall TForm1::Button34Click(TObject *Sender){ char szReg[]="^\\d{5}$"; // 限定为6位数字 char szStr[]="10025"; const char *pszErr; int nErrOffset; .原创 2020-06-09 13:22:59 · 433 阅读 · 0 评论 -
遍历listview控件
取出TListView中行和列的内容int nRows = ListView->Items->Count;//总行数for (int i = 0; i < nRows; i++ )//遍历listView1的每一行{ AnsiString strCaption = ListView->Items->Item[i]->Caption;//每行第1列 if(strCaption.IsEmpty()) {//从第1列~.原创 2020-05-28 15:26:46 · 777 阅读 · 0 评论 -
各种构造函数
创建一个字符串类,实现了相应的构造函数,代码如下:#include <stdio.h>#include <stdlib.h>class MyString{ private: char m_string[1024]; public: //1.无参构造函数 MyString() { s...原创 2020-03-16 19:04:57 · 1987 阅读 · 0 评论 -
C++builder调用Sqlserver存储过程
TDateTime dt; if(pSocka->Receive(&dt,sizeof(dt)) <= 0) return false; char szStationID[10]={0}; if(pSocka->Receive(szStationID,sizeof(szStationID)) <= 0) return false; ...原创 2020-01-11 16:22:11 · 392 阅读 · 0 评论 -
结构体对齐
网络传输结构体,如果有double或TDateTime类型的数据,需要1字节对齐,否则出现乱码,得不到想要的结果。1.第一种对齐方式#pragma pack(push) //保存对齐状态#pragma pack(1) //设定为4字节对齐struct test{};#pragma pack(pop) //恢复对齐状态2.第二种对齐方式#pragma pack(1)/...原创 2020-01-09 09:11:56 · 803 阅读 · 0 评论 -
注册字体文件
先将字体文件,放到程序目录下或系统目录中("c:\windows\fonts"),然后在注册表中注册字体信息。HKEY phkResult;DWORD RegResult;LONG Rlt = RegCreateKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts",0, "R.........原创 2020-01-04 16:47:36 · 1203 阅读 · 1 评论 -
将一维数组按指定行显示
将一维数组,按指定的行显示,也就是任意设置行的元素个数,然后一行一行打印出来.void ShowArray(int (& data)[], int total,int line){ int yuNum = total % line;//余数 int count = total / line;//整行数 AnsiString strShow;//测试显示...原创 2019-12-12 10:53:28 · 427 阅读 · 0 评论