好久没发问,问个关于双字节的问题
软件中使用了TMS的AdvMemo控件,目前我只能用这个控件了,不能用别的Memo控件代替了
问题是AdvMemo可以正确显示中文字,但当我按下退格键准备删除中文字的时候,只能删除该中文字的一半,另外一半还存在,造成乱码
而VCL带的Memo能根据当前的字符决定究竟是退2格还是1格
有没有什么方法入手修改这问题?
控件有源码的。。。
[解决办法]
void __fastcall TForm1::AdvMemo1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
}
中判断AdvMemo1有没有选中,判断位置,
按字节判断,字节大于0x80的应该是双字节,也就是
for(int i = 1; i <= AdvMemo1-> Text.Length(); i++)
{
Byte ch = Memo1-> Text.operator [](i);
if(ch > 0x80)
{
i++;
}
}