⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smasshare.pas

📁 SMGSession,一个短信网关接口代码
💻 PAS
字号:
unit SMASShare;

interface
uses
  sysUtils,Dialogs,Windows,Messages;

type
  TJPSMASShare=class
  public
    class function compressCellPhone(cellPhone:string):string;
    class function getCellPhoneType(cellPhone:string):byte;
  end;

  TJPSmasSPNumParser=class
  private
    cmSPNum,
    cuSPNum,
    telecomSPNum:string;

   function  parseSPNum(rootSPNum,fullSPNum:string):string;
   function  compressSPNum(rootSPNum,uSPNum:string):string;
  public
    constructor create(cmSPNum,cuSPNum,telecomSPNum:string);
    procedure   parse(cellPhone,SPNum:string;var xSPID:string);
    procedure   compose(cellPhone:string;uSPNum:string;var SPNum:string);
    function    getXSPIDBySPID(SPID:string):string;
  end;

implementation

{ TJPSmasSPNumParser }

procedure TJPSmasSPNumParser.compose(cellPhone, uSPNum: string;
  var SPNum: string);
begin
  case TJPSMASShare.getCellPhoneType(cellPhone) of
    1:SPNum:=compressSPNum(cuSPNum,uSPNum);
    2:SPNum:=compressSPNum(cmSPNum,uSPNum);
    3:SPNum:=compressSPNum(telecomSPNum,uSPNum);
  end;
end;

function TJPSmasSPNumParser.compressSPNum(rootSPNum,
  uSPNum: string): string;
var
  rootLen:byte;
begin
  if rootSPNum=uSPNum then
    result:=uSPNum
  else begin
    rootLen:=length(rootSPNum);

    if copy(uSPNum,1,rootLen)=rootSPNum then
      result:=uSPNum
    else result:=rootSPNum+uSPNum;
  end;
end;

constructor TJPSmasSPNumParser.create(cmSPNum, cuSPNum,telecomSPNum: string);
begin
  self.cmSPNum:=cmSPNum;
  self.cuSPNum:=cuSPNum;
  self.telecomSPNum:=telecomSPNum;
end;

function TJPSmasSPNumParser.getXSPIDBySPID(SPID: string): string;
var
  tmpStr:string;
  len:integer;
begin
  if ansiPos(cmSPNum,SPID)=1 then
  begin
    len:=length(cmSPNum);
    tmpStr:=copy(SPID,len+1,length(SPID)-len);
  end else if ansiPos(cuSPNum,SPID)=1 then
           begin
             len:=length(cuSPNum);
             tmpStr:=copy(SPID,len+1,length(SPID)-len);
           end else if ansiPos(telecomSPNum,SPID)=1 then
                    begin
                      len:=length(telecomSPNum);
                      tmpStr:=copy(SPID,len+1,length(SPID)-len);
                    end;

  result:=tmpStr;
end;

procedure TJPSmasSPNumParser.parse(cellPhone,SPNum: string; var xSPID: string);
begin
  case TJPSMASShare.getCellPhoneType(cellPhone) of
    1:xSPID:=parseSPNum(cuSPNum,SPNum);
    2:xSPID:=parseSPNum(cmSPNum,SPNum);
    3:xSPID:=parseSPNum(telecomSPNum,SPNum);
  end;
end;

function TJPSmasSPNumParser.parseSPNum(rootSPNum, fullSPNum: string): string;
var
  rootLen:byte;
begin
  if rootSPNum=fullSPNum then
    result:=''
  else begin
    rootLen:=length(rootSPNum);

    if copy(fullSPNum,1,rootLen)=rootSPNum then
      result:=copy(fullSPNum,rootLen+1,length(fullSPNum)-rootLen)
    else result:=fullSPNum;
  end;
end;

{ TJPSMASShare }

class function TJPSMASShare.compressCellPhone(cellPhone: string): string;
begin
  cellPhone:=trim(cellPhone);

  if length(cellPhone)>10 then
    if copy(cellPhone,1,2)='86' then
      cellPhone:=copy(cellPhone,3,length(cellPhone)-2);

  result:=cellPhone;
end;

class function TJPSMASShare.getCellPhoneType(cellPhone: string): byte;
var
  intPhone:word;
begin
  intPhone:=strtoint(copy(TJPSMASShare.compressCellPhone(cellPhone),1,3));

  case intPhone of
    130..133:result:=1;//联通
    134..139:result:=2;//移动
    else result:=3;//小灵通
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -