
C++
华山沦贱
混迹江湖20载一事无成
展开
-
C++临界区自动锁
偷懒copy了一个网上现成的自动锁,嵌入项目后调试中屡屡出问题,原类如下:class CLock{public: CLock() { InitializeCriticalSection(&m_cs); } ~CLock() { DeleteCriticalSection(&m_...原创 2018-04-21 11:54:45 · 1092 阅读 · 0 评论 -
当sprintf遇到string
一直都知道sprintf使用string参数时一定要用.c_str()转换为char*之后才行,否则就会出现“(NULL)”。一次疏忽,在sprintf中发现“(NULL)”,但是此参数是一个char*,无论如何找不到char*成为“(NULL)”的原因。后对sprintf的每次参数详细检查时才发现这个char*前一个参数是string,忘了转成char*,它自己没有变成“(NULL...原创 2018-12-29 14:48:51 · 3564 阅读 · 1 评论 -
BCB控制台输出中文的问题
BCB6控制台输出中文是没有问题的,但是wcout输出宽字符中文(wchar_t)是不正常的,但wprintf输出是正常的。在CB10中可以设置: setlocale(LC_CTYPE, ""); //wprintf wcout.imbue(locale("",LC_CTYPE)); //CB10 可行但在CB6中是不行的,而cout输出中文的是很正常的的...原创 2018-11-15 19:27:56 · 574 阅读 · 0 评论 -
修改一个操作ini的类
最近一个项目需要用到读写ini配置文件,以往都是用BCB内置的引用 一个通用ini配置文件操作类 发现其新建一个ini和增加、读取都没有问题,但修改就不正常了。调试发现是其缺少了一句修改语句。修改后完整源文件如下://---------------------------------------------------------------------------#ifnde...转载 2018-11-10 15:20:57 · 210 阅读 · 0 评论 -
关于tcp断线重连的问题
在工控上经常用到tcp连接,比如串口服务器或某些支持modbustcp协议的仪表等,以前尽量使用串口服务器的虚拟串口功能,现在逐步使用上了tcpserver或tcpclient模式。搜索了个C++ 的tcp断线重连的案例(http://www.cnblogs.com/kingdom_0/articles/2571727.html),使用这个的原因还因其使用的是收发多线程。server和clie...原创 2018-10-18 16:44:47 · 7162 阅读 · 4 评论 -
终于过渡到CB10.2了
为了做界面炫彩些,便于商务上更好操作,不得不把使用了17年的bcb6.0升级了。因为近几年的插件几乎没有BCB版的了。经过了一段难受的磨合期,发现CB10.2还是蛮不错的,兼容性也很好。API串口类、tcp、OPC都过渡得挺顺利,注意要字符串就OK了。以后后台程序用BCB,前台用CB。...原创 2018-07-10 20:23:07 · 400 阅读 · 0 评论 -
用map嵌套vector实现multimap功能
最近迷上了泛型编程,在一个项目中需要用到一个变长映射,于是用map+vector+结构体实现了multimap的基本功能。特改个demo存档。//---------------------------------------------------------------------------#include <map>#include<vector>#includ...原创 2018-06-13 10:46:29 · 2104 阅读 · 0 评论 -
测试OPCServer内存泄漏虚惊一场
十年前用C++玩会opc client后就一直想玩server,但因工作原因一直没有使用的机会和紧迫感,也因为其难度,就一直搁置着。年后因为新的工作原因,必须搞会opc server。自知年纪大了,从头啃COM技术几乎是不可能,使用网上现成的dll又担心不稳定或是出问题后不知如何查故障。后从老毛子网站得到了lightopc的源码,便花了半个月啃下了这个,虽然已经是15年前的技术,但依然...原创 2018-05-07 17:04:34 · 1083 阅读 · 0 评论 -
lightopc在32位win7系统中的无法启动故障(0xc000000d)
给客户做的一套工业物联网OPCserver软件,在多台电脑调试过正常:xp(x86)、win7 x64、win10x64。谁知客户刚收到就在自己的win7(x86)电脑上报“应用程序无法正常启动”:把自己公司的一台x86旧电脑装了win7测试果然如此。告诉了客户测试结果,客户说现场很多工控软件只能运行于x86电脑没法升级硬件。只好从自己身上找问题了。想尽一切办法,内事问百度、外事问谷...原创 2018-05-10 22:13:41 · 1435 阅读 · 0 评论 -
未解决的外部引用
BCB 6.0使用别人的开发包或引用类时经常出现 Unresolved external '*****' referenced from 的错误,往往编译没有问题,打包时才报错,极困扰!这主要是以下3个的问题:其一,引用了其他类,虽然加了头文件,但是没有将cpp文件添加进来。工程——添加到工程。或是 查看——工程管理器,鼠标操作。其二,声明了extern全局变量,定义在lib没有添加进来,#pra...原创 2018-04-21 19:35:15 · 2153 阅读 · 0 评论 -
OPC异步读与同步读的区别
一直用C++操作opc搞工控十多年了,从来都是同步读写,因为时效性并不要求过高,所以秉承“够用就行”的原则。其次也是因为同步读对异常处理比较方便。近来研究异步读写时,发现读取的数值与同步读取数值完全不一样,似乎顺序是乱的。待认真研究代码后才发现,同步和异步的读取还是有本质区别的,不仅仅是异步回调的区别。同步读取函数: virtual HRESULT STDMETHODC...原创 2019-01-16 10:19:48 · 3866 阅读 · 1 评论