1。在delphi中通过怎样的控制才能向移动或者联通手机用户发送消息?如果我要向呼机发送消息呢? 也就是说,类似这样的控制该怎么做?是什么思路? 用那些控件,方法? 
2。delphi中怎样做安装文件?

解决方案 »

  1.   

    1、这个可能需要用到WEBSERVICE
      

  2.   

    手机短信息SMS开发—编码,解码1、  英文编码缺省的GSM字符集为7位编码,ASCII码为8位编码,编码就是将8位ASCII编码转换为7位编码。例如:1234 编码后得到31D98C062进制表示8位编码 00110001 00110010 00110011 001101007位编码 00110001 11011001 10001100 00000110 通过例子可以看出,将ascii8位编码的Bit8去掉,依次将下7位编码的后几位逐次移到前面,形成新的8位编码。以下是C++Builder的实现代码:String __stdcall EncodeEnglish(String InputStr){        int n,len,cur;        String tempstr,returnstr;        unsigned char mid1[2],mid2[2];        len=InputStr.Length();        n=0;        for(int i=1;i<=len;i++)        {           if (i<len)           {             strcpy(mid1,InputStr.SubString(i,1).c_str());             strcpy(mid2,InputStr.SubString(i+1,1).c_str());             cur=(mid1[0]>>n)|((mid2[0]<<(7-n))& 0xff);           }           else           {             strcpy(mid1,InputStr.SubString(i,1).c_str());             cur=(mid1[0]>>n)& 0x7f;           }           FmtStr(tempstr,"%2.2X",ARRAYOFCONST((cur)));           returnstr=returnstr+tempstr;           n=(n+1)%7;           if (n==0)                   i++;             }return returnstr;}2、  英文解码简单地说就是将7位字符编码转换为8为字符编码以下是C++Builder的实现代码:int ReturnHex(int Value){        switch (Value)        {          case 0:                Value=0x7f;                break;          case 1:                Value=0x3f;                break;          case 2:                Value=0x1f;                break;          case 3:                Value=0x0f;                break;          case 4:                Value=0x07;                break;          case 5:                Value=0x03;                break;          case 6:                Value=0x01;                break;          case 7:                Value=0x00;                break;        }        return Value;}String __stdcall DecodeEnglish (String InputStr){        unsigned char InStr[300];        char OutStr[300];        String str;        int j=0,i=0;        int Point=0;        int temp;        memset(InStr,0,301);        memset(OutStr,0,301);        for(int i=0;i<InputStr.Length();i=i+2)        {                str="0x"+InputStr.SubString(i+1,2);                InStr[i/2]=StrToInt(str);        }        while(j<=InputStr.Length()/2)        {                if(Point==0)                        OutStr[i]=InStr[j]&ReturnHex(Point);                elseOutStr[i]=((InStr[j]&ReturnHex(Point))<<Point)|(InStr[j-1]>>(8-Point));                if(Point%7==0&&Point!=0)                        Point=0;                else                        Point=Point+1;                i++;                j=i-(i/8);         }        OutStr[12]=((InStr[12]&0x07)<<5)|(InStr[11]>>(8-5));        return AnsiString(OutStr);}3、  中文编码中文编码较为简单,就是将GB2312的中文编码转换为代码页为CP936的Unicode编码即可以下是C++Builder的实现代码String  EncodeChinese(String InputStr){             int cur;String tempstr,returnstr;WideString ws;wchar_t  mid[2];ws=WideString(InputStr);for(int i=1;i<=ws.Length();i++){wcscpy(mid,ws.SubString(i,1).c_bstr());cur=mid[0];FmtStr(tempstr,"%4.4X",ARRAYOFCONST((cur)));returnstr=returnstr+tempstr;}return returnstr;
    }
    4、  中文解码
    将代码页为CP936的Unicode编码转换为GB2312的中文编码即可以下是C++Builder的实现代码
    String  DecodeChinese(String InputStr)
    {
            wchar_t Buf[300];
            for(int i=0;i<InputStr.Length();i=i+4)
            {
                 Buf[i/4]=StrToInt("0x"+InputStr.SubString(i+1,4));
            }
            Buf[InputStr.Length()/4]=0;
            return WideCharToString(Buf);
    }
      

  3.   

    Drate(小虫) 我試了一下,結果不行!
      

  4.   

    要实现发信息到移动、连通手机,必须要取得用两个公司提供接口动态连接库,然后自行编写程序才可以。其原理并不难懂,反正就和一般的编程没有什么区别要制作delphi的安装文件,可以使用它附带的installshield,至于制作过程可以参考刘艺写的《installshield5制作安装盘》
      

  5.   

    谢谢小虫:),我将按照你提供的方法尝试一下。还有,cobi能否详细的说一下思路? 还有,哪儿有您提到的刘艺写的《installshield5制作安装盘》? 谢谢各位。
      

  6.   

    给我提示的各位朋友,你们好:
      
       最后,这个问题用移动公司提供的api完成 。谢谢各位的指导,谢谢 Drate(小虫)  ,谢谢各位。