汉字转拼音缩写的BCB代码,该如何处理

汉字转拼音缩写的BCB代码 - C++ Builder / Windows SDK/API
这段代码是我从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";
  if(nCode >= 1833 && nCode < 2078) strLetter = "c";
  if(nCode >= 2078 && nCode < 2274) strLetter = "d";
  if(nCode >= 2274 && nCode < 2302) strLetter = "e";
  if(nCode >= 2302 && nCode < 2433) strLetter = "f";
  if(nCode >= 2433 && nCode < 2594) strLetter = "g";
  if(nCode >= 2594 && nCode < 2787) strLetter = "h";
  if(nCode >= 2787 && nCode < 3106) strLetter = "j";
  if(nCode >= 3106 && nCode < 3212) strLetter = "k";
  if(nCode >= 3212 && nCode < 3472) strLetter = "l";
  if(nCode >= 3472 && nCode < 3635) strLetter = "m";
  if(nCode >= 3635 && nCode < 3722) strLetter = "n";
  if(nCode >= 3722 && nCode < 3730) strLetter = "o";
  if(nCode >= 3730 && nCode < 3858) strLetter = "p";
  if(nCode >= 3858 && nCode < 4027) strLetter = "q";
  if(nCode >= 4027 && nCode < 4086) strLetter = "r";
  if(nCode >= 4086 && nCode < 4390) strLetter = "s";
  if(nCode >= 4390 && nCode < 4558) strLetter = "t";
  if(nCode >= 4558 && nCode < 4684) strLetter = "w";
  if(nCode >= 4684 && nCode < 4925) strLetter = "x";
  if(nCode >= 4925 && nCode < 5249) strLetter = "y";
  if(nCode >= 5249 && nCode < 5590) strLetter = "z";