- 博客(39)
- 资源 (1)
- 收藏
- 关注
原创 iconv() errno:EILSEQ(InBuf多字节序无效)
环境:Linux,C++问题:在发送消息时,需要将utf-8编码转换为utf-16编码,因此需要用到iconv()函数族在用iconv()函数进行转换时,出现了错误,提取errno得到EILSEQ错误,即待转换的char*所指向的内容多字节序无效(个人理解为有乱码)探查原因:调试程序,发现原来是自己结构体没有填充完善造成的。(粗心害死人)原因:在转换前,内存空间是进
2011-12-21 10:40:55 5801 1
原创 从数据库中读取文本类型(char(16))字段时的bug(不算是err)
环境:数据库(普遍适用),C#出错原因:从数据库里读取用户名,如name="xuwei "代码:读取的代码如下所示:while (usrDataReader.Read()) { nRow++; string usrName = usrDataRea
2011-12-20 21:17:35 1073
原创 C# 为TreeView中的子节点添加单击事件
文章名字为单击事件,实际上双击等事件的操作类似说明:(1) TreeView中的Nodes[] 本身是没有单击、双击事件的,但是TreeView本身这些事件都有;(2) TreeView中有一个属性:SelectedNode,该属性可以获取或设置当前选中的节点;因此,结合点(1)和(2),就可以做出一个类似于TreeView中的子节点单击事件实例代码:(1) 为TreeVi
2011-12-20 13:28:45 16542 4
原创 在该控件上执行的操作正从错误的线程调用。使用 Control.Invoke 或 Control.BeginInvoke 封送到正确的线程才能执行此操作。
环境:C# VS2010 .NET 4.0错误原因:在多线程中,窗体控件的元素不是线程安全的。除了UI线程,其他线程不可以对控件进行操作;解决办法:(1) 可以通过异步委托调用来调用控件的方法来实现注意:一般的委托是以同步方式来实现的BeginInvoke();返回类型:IAsyncResultEndInvoke();传入IAsyncResult,返回
2011-12-20 10:50:44 3245
转载 通过多线程为基于 .NET 的应用程序实现响应迅速的用户
转自:http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/misMultithreading.mspx?mfr=true本文假设您熟悉 .NET、C# 和 Windows 窗体下载本文的代码: Multithreading.exe (106KB)摘要如果应用程序在
2011-12-20 10:13:30 1004
原创 C#端和C++端套接字通信中的几个问题
(1) 从字符串转为固定大小的字符数组如:定义固定大小的结构体:(使用命名空间:using System.Runtime.InteropServices;) [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] struct OnlineUsrInfo { [Marsh
2011-12-19 22:59:47 1242 1
原创 C# 窗体的几个主要事件
(1) Load()事件在对象实例化,窗体可见之前发生。此时窗体处于实例化过程中,但还不可见(2) Activated()事件在窗体处于可见状态并处于当前状态时发生。刚开始不太明白,后来发现,每当窗体有变化时,该事件就会被触发。(3) Shown()事件在窗体显示之后发生,即加载完所有控件,并显示对话框后,触发该事件(4) Closing()事件在窗体关闭时发生
2011-12-19 14:23:33 2337
原创 Cannot insert breakpoint 0.
环境:Linux GCC问题:134 int nRet=close(m_threadPool[pos]->sock);(gdb) Warning:Cannot insert breakpoint 0.Error accessing memory address 0xaa8ce1d1: 输入/输出错误.394 int nRecv=recv(
2011-12-16 09:15:18 6646
原创 用指针做传出参数的错误分析
环境:Linux C++问题:memcpy(data, transBuf+nMsgHeadSize, dataLen);调试,查看内存如下:(gdb) print data$19 = 0xb67e237c ""(gdb) print transBuf+nMsgHeadSize$20 = 0x8070460 "xuwei"代码如下:传一个指针参数进去,
2011-12-15 16:22:29 1242
原创 Linux int型转换为char*型
在Linux中没有itoa()函数,只有atoi() 这点很有趣,居然不对称所以在Linux中实现从整型到char*的转换,一般使用如下两种方法:(1)用sprintf()函数来实现sprintf(char * cValue, "%d", int nValue);这种方法简单易行,比较喜欢(2)自己定义函数进行转换网上有很多自己的实现,用于跨平台的整型,字符型转换
2011-12-15 12:33:34 9819
转载 Linux下编码转换(iconv函数族)
转自:http://www.linuxdiyf.com/viewarticle.php?id=45164在Linux上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实现(针对文件进行转换) 一、利用iconv函数族进行编码转换 iconv函数族的头文件是iconv.h使用前需包含之:#include iconv函数族有三个函数,原型如下:(1
2011-12-14 21:55:57 15927 1
原创 Unicode编码方案简介及编码实现
部分摘自:维基百科(http://zh.wikipedia.org/wiki/Unicode)百度知道(http://baike.baidu.com/view/40801.htm)为了使内容简练,所以删去了很多东西。如果查看详细内容,请查看上面的链接。大概来说,Unicode 编码系统可分为编码方式和实现方式两个层次。编码方式Unicode是国际组织制定的可以容纳世界上
2011-12-14 21:08:28 3342
转载 Unicode与Ansi的区别
转自:http://www.cppblog.com/lapcca/archive/2010/05/06/114649.htmlUnicode与Ansi是两种不同的编码方式标准,Ansi中的字符采用8bit,而Unicode中的字符采用16bit。(对于字符,Ansi以单字节存放英文字符,以双字节存放中文等字符;而Unicode下,英文和中文的字符都以双字节存放)Unicode码也是一种
2011-12-14 13:51:14 3340
原创 Linux下char类型可能带来的问题
问题起因:linux下C++采用utf-8编码方式,因此char类型不是单纯的一个字符一个字节。一个英文字符占一个字节,而一个中文字符则不只占了一个字节(具体查看Unicode编码方案简介及实现一文)。如下所示,分别输出中文的“王子”和其中文拼音的“wangzi”代码: char name[16]={0}; strcpy(name, "WangZi");
2011-12-14 13:18:55 4162
原创 wchar_t类型的几个函数
wchar_t是C/C++的字符数据类型,是一种扩展的字符存储方式。在Windows下,wchar_t占2个字节(byte);在Linux下,wchar_t占4个字节wchar_t类型主要用在国际化程序的实现中,但它不等同于Unicode编码。Unicode编码的字符一般以wchar_t类型存储。char是8位字符类型,最多只能包含256种字符,许多外文字符集所含的字符数目超过256个
2011-12-14 08:06:52 8004 1
原创 c#中Marshal.Copy()方法的使用
c#中Marshal.Copy方法的使用Marshal.copy()方法用来在托管对象(数组)和非托管对象(IntPtr)之间进行内容的复制函数有很多重载,如下所示:Copy(array[]()[], Int32, IntPtr, Int32) 将一维的托管 8 位无符号整数数组中的数据复制到非托管内存指针。Copy(array[]()[], Int32, IntPtr, Int3
2011-12-13 10:59:35 35962
原创 C#端和C++端套接字通信中遇到的编码问题
环境:Windows, VS2010注意事项:Windows下的wchar_t与Linux下的wchar_t不同(在Windows下占2字节;而在Linux下则占4字节)正题:由于C#端和C++端的编码方式不同,因此在通过套接字编程时,会有一些问题C#使用Unicode码,一个char占两个byte;而C++使用ANSI码,一个char占用一个byte所以,为了统一两者之间的不
2011-12-13 09:24:54 2072
转载 C#编程规范
转自:http://www.cnblogs.com/moss_tan_jun/archive/2010/10/10/1847380.html陈年的文档,不过很不错整理出来发到博客上,还有更多的朋友需要。目 录 1. 简介 32. 适用范围 33. 文体 34. 代码组织与风格 34.1. Tab 34.2. 缩进 44.3. 空行 44.4. 函数长度
2011-12-13 09:08:51 484
原创 C#中的编码实验
在C#中,默认使用Unicode码,因此一个char占2个byte实验1:通过ASCIIEncoding类进行转换char和byte string name = "xuwei"; byte[] bName = ASCIIEncoding.ASCII.GetBytes(name.ToCharArray()); int
2011-12-13 08:58:46 690
原创 mbstowcs()/wcstombs()
参考:http://blog.sina.com.cn/s/blog_55c1b83b0100wbah.html本文介绍两个由C语言提供的宽字符(wchar_t类型)和多字节字符( 一个字符用一个或者多个字节表示) 转换函数,因此具有通用性(在Windows/Linux系统中都可以使用):所需头文件:stdlib.h#include ( 1 ) mbstowcs()功能:把多
2011-12-12 14:52:38 21703 5
转载 用C++读写unicode文本
转自:http://www.cnblogs.com/WeedQian/archive/2009/12/28/1634478.html字符类型char, wchar_t, TCHAR,最熟悉的char是单字节字符,适用于ANSI编码;wchar_t是双字节的宽字符类型,适用于unicode编码;TCHAR是一个宏,在ANSI坏境下定义为char,unicode坏境下定义为wchar_t。
2011-12-11 10:48:37 48
转载 C++ 读取unicode文本
转自:http://www.cnblogs.com/WeedQian/archive/2009/12/28/1634478.html字符类型char, wchar_t, TCHAR,最熟悉的char是单字节字符,适用于ANSI编码;wchar_t是双字节的宽字符类型,适用于unicode编码;TCHAR是一个宏,在ANSI坏境下定义为char,unicode坏境下定义为wchar_t。
2011-12-11 10:47:13 101
转载 用C++读写unicode文本
转自:http://www.cnblogs.com/WeedQian/archive/2009/12/28/1634478.html字符类型char, wchar_t, TCHAR,最熟悉的char是单字节字符,适用于ANSI编码;wchar_t是双字节的宽字符类型,适用于unicode编码;TCHAR是一个宏,在ANSI坏境下定义为char,unicode坏境下定义为wchar_t。
2011-12-11 10:46:44 7537
原创 c#获取系统时间的方法
话说,在C#中获取时间还真是简单呀...使用DateTime结构(struct)类型就可以直接搞定所在命名空间:using system;使用DateTime结构的静态属性Now可以获得本地时间,而不用像C++中获取国际时间,再转换成本地时间那么麻烦;静态属性Today可以获取当前日期;注意事项:DateTime是一个Struct,而不是一个类,没有构造函数。而是类似于静态
2011-12-09 16:10:16 813
原创 undefined reference to `std::cin'
背景:在Linux下直接man cin/cout 是没有结果的,刚开始以为无法在Linux下使用cin/cout,后来看到网上确实有一些类似的代码,所以做了一个简单的实验,代码如下:#include using namespace std;int main(){ char name[16]={0}; printf("请输入姓名\n"); cin>>name
2011-12-09 14:42:57 5257
原创 Not unique table/alias
参考:http://www.3389hack.com/xueyuan/fuwuqi/MySQL/4165.html内容如下:Not unique table/alias错误编号:1066问题分析:SQL 语句中出现了非唯一的表或别名。解决方法:1、请检查出现问题位置的 SQL 语句中是否使用了相同的表名,或是定义了相同的表别名。2、检
2011-12-09 12:55:14 23050 2
原创 Program received signal SIGPIPE, Broken pipe.
参考:http://blog.csdn.net/hejianhua/article/details/5994915
2011-12-09 12:43:42 808
原创 传递给系统调用的数据区域太小。 (异常来自 HRESULT:0x8007007A)
背景:在C#代码中,需要将一个结构体转为字符数组的形式结构的形式类似于:struct usrInfo{ [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public char[] name; public int ID;}调用自己的结构体转换函数,将其转为字符数组形式但是提示如下错误:传
2011-12-09 10:37:03 12828 2
原创 传递给系统调用的数据区域太小。 (异常来自 HRESULT:0x8007007A)
背景:在C#代码中,需要将一个结构体转为字符数组的形式结构的形式类似于:struct usrInfo{ [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public char[] name; public int ID;}调用自己的结构体转换函数,将其转为字符数组形式但是提示如下错误:传递给
2011-12-09 10:28:12 3019
转载 StructLayout特性
转自:http://www.cnblogs.com/JessieDong/archive/2009/07/21/1527553.htmlStructLayout特性 公共语言运行库利用StructLayoutAttribute控制类或结构的数据字段在托管内存中的物理布局,即类或结构需要按某种方式排列。如果要将类传递给需要指定布局的非托管代码,则显式控制类布局是重要的。它的
2011-12-09 10:26:31 651
转载 Ubuntu安装配置Mysql
转自:http://www.cnblogs.com/wuhou/archive/2008/09/28/1301071.html三种安装方式: 1. 从网上安装 sudo apt-get install mysql-server。装完已经自动配置好环境变量,可以直接使用mysql的命令。 注:建议将/etc/apt/source.list中的cn改成us,美国的服务器
2011-12-08 20:42:25 505
原创 C# 动态创建Access数据库以及数据表
参考自:http://www.cnblogs.com/guanjinke/archive/2006/11/30/577241.html在上一篇中说到,直接用File类的静态方法Create()方法创建具有固定格式的Access数据库文件并不成功。这里介绍正确的创建方法。创建数据库文件:步骤一:在项目引用中增加COM组件:Microsoft ADO Ext. 2.8 for DDL
2011-12-08 13:36:30 7574
原创 C# 动态创建Access数据库时的错误:“不可识别的数据库格式”
需要用C#动态创建Access数据库,于是有了下文。使用的是Office 2007,数据库文件的格式为.accdb刚开始的时候,以为去检测文件是否存在,如果不存在的话直接创建数据库文件就好了。代码如下:string filePath = new DirectoryInfo(".").FullName + @"\data.accdb"; if (!File.
2011-12-08 12:38:02 3632
原创 cannot find -lmysqlclient
背景:在Linux下,用MySQL数据库编写程序,需要用到-lmysqlclient链接MySQL库但是在链接到过程中,提示错误:cannot find -lmysqlclient 查错:(1)-lmysqlclient中的-l是选项,-lmysqlclient表示链接libmysqlclient.so,文件的前缀和后缀都是默认的。使用 locate *mysqlclient*
2011-12-07 10:24:46 3173
原创 “warning: the `gets' function is dangerous and should not be used.
在编译到时候碰到如下问题:“warning: the `gets' function is dangerous and should not be used.在另外一个环境下编译到时候是没有问题到,现在搬到另外一个环境下出该问题,可能是环境问题在网上查了下,说是“ Linux 下gcc编译器不支持这个函数,解决办法是使用 fgets”fgets()函数的基本用法为:fget
2011-12-07 08:50:57 1581
原创 C# C++ 结构体匹配问题
背景:在套接字的一端,C#中定义了固定的结构体,然后用该结构体给C++端的另外一端发送消息。代码:结构体如下所示:typedef struct _Info{ char name[16]; char cipher[16]; char signature[256];}Info;C#端代码如下: Info myInfo; s
2011-12-06 13:13:23 918
原创 Linux连接MySQL时的错误:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
连接本地的MySQL数据库引擎时候出现的错误。用mysql_error()函数获取到错误提示:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)为了查看原因,直接在命令行下输入命令查看是否能进入MySQL(MySQL -u usrName -p),仍然提示:Can't co
2011-12-02 14:04:42 12499
原创 一个特别的multiple definition错误
环境:ubuntu 11.10,Emacs在BasicMsgSender类中定义了两个静态方法:SendTcpMsg(),SendUdpMsg(),用于一般的发送消息。在其他两个类中,引用了该方法:BasicMsgSender::SendTcpMsg()在链接的时候,提示这两个静态函数被重复定义multiple definition of `BasicMsgSender::sendTc
2011-12-02 13:09:54 787
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人