level 6
额......
我只能说sorry,不会写安卓下的程序
2014年03月23日 09点03分
3
这么简单的东西,也不会
2014年03月23日 10点03分
如果是用c做的界面的话还不错哦
2014年03月23日 10点03分
回复 封天神奇 :c++的代码,用mfc做的界面
2014年03月23日 13点03分
回复 18783904248 :哦哦,我也会点
2014年03月24日 05点03分
level 6
错误处理的代码
//检查数据合法性
//返回一个标准的数值字符串
extern "C" _dec
lsp
ec(dllexport) LPCWSTR CalNum::CheckString(CString str)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if(IsCheckString==false)
{
for(int i=0;i<nError;i++)
{
CalNum::ErrNo[i]=NOERROR;
}
}
//////////////////
CString symbol;//正负数符号.这里整数符号用空字符表示,负数用'-'表示,两个负号不表示正数
int PointPosition=-1;//小数点位置
if(str.GetLength()==0)
{
str=L"0";//
SystemTip=3;//输入数据为空,自动转换为0计算
}
if(str.Find('-')==0)
symbol=L"-";
else
symbol=L"";
//////////////////
if(str.Find(L".")==0)
{
str=L"0"+str;
}
////去掉中文字符和字母
CString t;
for(int i=0;i<str.GetLength();i++)
{
wchar_t ch=str.GetAt(i);
if(IsDBCSLeadByte(ch))
{
t+=L"";
CalNum::ErrNo[2]= ERROR_HAVE_CHINESE_CHAR;//有中文字符
//ErrNo[2]= 10002;
}
else if(ch>='0' && ch<='9')
{
t+=ch;
}
else if(ch=='.')
{
t+=ch;
}
else if(ch>='a' && ch<='z' || ch>='A' && ch<='Z')
{
t+=L"";
CalNum::ErrNo[3]=ERROR_HAVE_ENGLISH_CHAR;//有英文字符
//ErrNo[3]=10003;
}
else
{
t+=L"";
if(!IsDBCSLeadByte(ch))
{
CalNum::ErrNo[1]= ERROR_INPUT_OTHER_SYMBOL;//特殊符号
//ErrNo[2]= 10002;
}
}
}
str=t;
if(str.Find('.',0)==0)
{
str=L"0"+str;//输入数据第一位是小数点时进行错误处理
}
CString LeftStringOfstrNumber,RightStringOfstrNumber;//整数部分和小数部分
PointPosition=str.Find('.');
if(PointPosition!=-1)//根据数据中是否有小数点进行分别处理
{
LeftStringOfstrNumber=str.Mid(0,PointPosition);
RightStringOfstrNumber=str.Mid(PointPosition+1,str.GetLength()-PointPosition-1);
}
else
{
LeftStringOfstrNumber=str;
RightStringOfstrNumber=L"";
}
//去掉数据中多余的小数点
if(RightStringOfstrNumber.Find(L".")!=-1)
{
RightStringOfstrNumber.Replace(L".",L"");
CalNum::ErrNo[6]=ERROR_INPUT_MORE_POINT;//多输入了小数点
//ErrNo[6]=10006;
}
////////////////////////////////////////
t=L"";
RightStringOfstrNumber.MakeReverse();
for(int i=0;i<RightStringOfstrNumber.GetLength();i++)
{
if(RightStringOfstrNumber.Mid(i,1)!=L"0")
{
t=RightStringOfstrNumber.Mid(i,RightStringOfstrNumber.GetLength()-i);
break;
}
}
RightStringOfstrNumber=t;
RightStringOfstrNumber.MakeReverse();
RightStringOfstrNumber.Replace(L"-",L"");//
//去掉前面重复的零
//最前面不能有连续的数0和错误的符号
//去掉数据中多余的负号
if(LeftStringOfstrNumber.Find(L"-")!=-1)
{
LeftStringOfstrNumber=LeftStringOfstrNumber.Mid(1,LeftStringOfstrNumber.GetLength()-1);
LeftStringOfstrNumber.Replace(L"-",L"");
CalNum::ErrNo[1]=ERROR_INPUT_OTHER_SYMBOL;
//ErrNo[1]=10001;
}
//去掉数据中多余的小数点
if(LeftStringOfstrNumber.Find(L".")!=-1)
{
LeftStringOfstrNumber.Replace(L".",L"");
CalNum::ErrNo[6]=ERROR_INPUT_MORE_POINT;
// ErrNo[6]=10006;
}
//处理前面重复的零
for(int i=0;i<LeftStringOfstrNumber.GetLength();i++)
{
if(LeftStringOfstrNumber.Mid(i,1)!="0")
{
LeftStringOfstrNumber=LeftStringOfstrNumber.Mid(i,LeftStringOfstrNumber.GetLength()-i);
break;
}
else
{
if(i>1)
{
CalNum::ErrNo[5]=ERROR_ZERO;
//ErrNo[5]=10005;
}
}
}
if(PointPosition!=-1)//根据数据中是否有小数点进行分别处理
{
str=symbol+LeftStringOfstrNumber+L"."+RightStringOfstrNumber;//重新组合数据
}
else
{
str=symbol+LeftStringOfstrNumber+RightStringOfstrNumber;//重新组合数据
}
//wchar_t *ResultNumber=(wchar_t*)malloc(sizeof(str)+1);
wchar_t *ResultNumber=new wchar_t[str.GetLength()+1];
for(int i=0;i<str.GetLength();i++)
{
wchar_t ch=str.GetAt(i);
ResultNumber[i]=ch;
}
ResultNumber[str.GetLength()]='\0';
IsCheckString=true;
return (LPCWSTR)ResultNumber;
}
2014年03月25日 04点03分
12