客户端版本信息对象的成员函数:
stVersionInfo& operator=(const char *ver) {
sscanf(ver,"%d.%d.%d",&major_,&minor_,&reversion_);
return *this;
}
用于从版本字符串解析生成版本对象信息。
如:
char version[] = "2.4.3";
stVersionInfo vi = version;
在BCB中,如果version形如"2.4",则sscanf报CodeGuard错误.
通过修改BCB关于CodeGuard的配置可以屏蔽此错误,参见:
http://topic.csdn.net/u/20110302/09/3dc07290-bae0-4b74-9d4d-480eb75284e8.html
如不修改配置,可改变实现(如下):
stVersionInfo& operator=(const char *ver) {
int *pv[] = {&major_,&minor_,&reversion_};
unsigned char *p = ver;
unsigned short index = 0;
char data[16]; ///< @note 未考虑data溢出情况
unsigned short data_len = 0;
char ch = '\0';
do {
ch = *p;
if (ch=='.'||ch=='\0') {
data[data_len] = '\0';
(*pv[index++]) = atoi(data);
data_len = 0;
}
else {
data[data_len] = ch;
data_len++;
}
p++;
} while(ch!='\0'&&index<sizeof(pv)/sizeof(pv[0]));
return *this;
}