新建窗体,在窗体上放置Button1、Edit1、Edit2。
/*在Edit1中输入全角字符、中文、半角字符或混杂输入。
单击Button1,Edit1中的文字显示到Edit2中并转换了所有的全角字符。
注意,程序没有对特殊字符如255(按住ALT再按小键盘的2、5、5输入)等作出正确反应。*/
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int nLength=Edit1->Text.Length();
if (nLength==0)
return;
AnsiString str=\"\";
char *cTmp=new char[nLength+1];
StrPCopy(cTmp,Edit1->Text);
BYTE c1,c2;
int i;
for (i=0;i<nLength;i++)
{
c1=cTmp[i];
c2=cTmp[i+1];
if (c1==163)//判断是否为全角字符
{
str=str+AnsiString((char)(c2-128));
i++;
continue;
}
if (c1>163)//判断是否为文字
{
str=str+AnsiString((char)c1);
str=str+AnsiString((char)c2);
i++;
continue;
}
if ((c1==161) && (c2==161))//全角空格是个特例,另加处理
{
str=str+\" \";
i++;
continue;
}
str=str+ AnsiString(char(c1));
}
Edit2->Text=str;
delete cTmp;cTmp=NULL;
}
以上代码C++Builder5.0/Win98 SE下编译通过。