汉字转拼音缩写的BCB代码,该怎么处理

汉字转拼音缩写的BCB代码
这段代码是我从VC转换过来的,但是有问题,希望各位帮我看看修正一下:

代码如下:

void __fastcall TForm1::Button2Click(TObject *Sender)
{//转换
        String CHChar,SpellChar;
         CHChar = Edit1->Text;//获取汉字
         GetFirstLetter(CHChar, SpellChar);//调用汉字转拼音缩写程序
         Edit2->Text = SpellChar;//设置拼音缩写到文本框

}
//---------------------------------------

//通过汉字获得汉字拼音首字母串
void TForm1::GetFirstLetter(String strName, String& strFirstLetter)
{
    //存放一个汉字高低位字节
    TBYTE ucHigh, ucLow;
    //存放汉字区位码
    int nCode;
    //存放汉字拼音首字母
    String strRet;
    //复位首字母
   // strFirstLetter.IsEmpty();
    //单个字节遍历
    char *p=strName.c_str();
    for (int i=0; i<strName.Length(); i++)
    {
        //判断是否是组成汉字的字节
        if ( (TBYTE)*p < 0x80 )
        {
                p++;
            continue;
        }
        //获取汉字高位字节
        ucHigh = (TBYTE)*p;
        //获取汉字低位字节
        ucLow = (TBYTE)*p++;
        
        //汉字的内码是从0xa1开始编码
        if ( ucHigh < 0xa1 || ucLow < 0xa1)
        {
                p++;
                continue;
        }
        else
        {
            //计算汉字区位码
            nCode = (ucHigh - 0xa0) * 100 + ucLow - 0xa0;
            //通过汉字区位码获得汉字拼音首字母
            FirstLetter(nCode, strRet);
            //将首字母拼接成串
            strFirstLetter += strRet;
            p++;
        }

    }
}

//---------------------------------------

void TForm1::FirstLetter(int nCode, String& strLetter)
{
   if(nCode >= 1601 && nCode < 1637) strLetter = "a";
   if(nCode >= 1637 && nCode < 1833) strLetter = "b";