第1个回答 2009-06-26
软件以二进制"看"字串,中文字是双字节构成的,其中前面一个字节ASCii值超过128.
简单判断可以这样,按2进制逐一读字串,某位小于128则按英文显示,大于128就取两个字节,继续循环读取下一位.
第2个回答 2009-06-26
用代码判断读出的是ascil码还是汉字
AnsiString __fastcall TMainForm::DisplayHzPy(TEdit *Edit1)
{
char *buf;
AnsiString TextDisplay="";
long len=0;
len=SendMessage( Edit1->Handle,WM_GETTEXTLENGTH,0,0);
buf=(char *)malloc(len+1);
memset(buf,0x00,len+1);
SendMessage(Edit1->Handle,WM_GETTEXT,len+1,(long)buf);
unsigned char *Hzkc=buf ;
for(int q=1;q<=len;)
{
unsigned char *HzkC=buf ;
if(*HzkC >=128)
{
TextDisplay+=AnsiString(getpy(buf)) ;
buf+=2;
q+=2;
}
else if((*HzkC >=0)&&(*HzkC <128))
{
TextDisplay+=AnsiString(buf[0]) ;
buf+=1;
q+=1;
}
}
return (TextDisplay);
}本回答被提问者采纳