//发送短信息
function TModem.SendMsg(Msg,Dst : string;CHS : boolean): Boolean;
var
   strTmp,smsType,sMsgCode : ansistring;
   sDstCode,sOaCode : string;
   iLen : integer;    //短信长度
   sToSend : ansistring;
begin
   result := true;
   sMsgCode := Ecode(Msg,CHS);
   strTmp := copy(self.SMSC,2,13);
   if strTmp='' then
   begin
       result :=false;
       exit;
   end;
   sOaCode:= encodebcd(strTmp); //对手机号编码
   sToSend := '0891' + sOaCode + '11000B91';
   strTmp :='';
   sDstCode :='';
   sDstCode := encodebcd(Dst);
   sToSend := sToSend + sDstCode;
   //0008 为中文信息,0000为英文信息
   if CHS then  //中文信息
     smsType :='0008'
   else
     smsType := '0000';
   sToSend := sToSend + smsType;
   sToSend := sToSend + '8F';
   //短信有效时间     8f=12hr
   iLen := length(Msg);      //字节长度
   strTmp := inttohex(iLen,2);
   //strTmp := '04';
   sToSend := sToSend + strTmp;
   sToSend := sToSend + sMsgCode;
   sToSend := sToSend + #26#13#10;
   iLen := (28+length(Msg)*2) div 2;  //iLen 也是指字节长度
   fMscomm.Output := CN_CMGS + inttostr(iLen);
   fMscomm.Output := EN_RETURN;
   if AnalyzeModemResponseCode<>MODEM_READY_RETURN then
   begin
      result :=false;
      exit;
   end;
   sleep(20);
   fMscomm.Output := sToSend;
   if AnalyzeModemResponseCode<>MODEM_OK_RETURN then
   begin
     result := false;
     exit;
   end;
end;
为什么程序运行到strTmp := inttohex(iLen,2);时总出内存访问错误,如果改成strTmp := '04';那下面的sToSend := sToSend + #26#13#10;又出同样的错误?
帮帮我,着个该死的问题已经折磨了我2个星期了.