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

📄 subsponlinestate.~pas

📁 SMGSession,一个短信网关接口代码
💻 ~PAS
字号:
{*******************************************************}
{                                                       }
{              荆鹏亿信分公司SP系统                     }
{                                }
{             子SP服务商在线存放单元                    }
{                                                       }
{         程序员:宋伟华    2004.3.12                   }
{                                                       }
{  版权 (c)  2003-2004 荆鹏软件开发有限公司       }
{                                                       }
{*******************************************************}
unit SubSPOnlineState;

interface

uses
 sysUtils,Dialogs,Windows,DataStrucClass,iniFiles,Forms,Classes,ActiveX,share;

type
  PNode=^SubSPNode;

  SubSPNode=record
    MinVal,MaxVal:string;
    RptCntInDB:Cardinal;
    NextNode:PNode;
  end;

  TSubSPOnlineLink=class
    private
      SubSPLink:PNode;
    public
      constructor Create;
      procedure AddNode(MinVal,MaxVal:string);
      procedure DelNode(MinVal,MaxVal:string);
      function  FindSubSP(SPID:string):boolean;

      function toString:string;
    end;

implementation

{ SubSPOnlineLink }

procedure TSubSPOnlineLink.AddNode(MinVal,MaxVal:string);
var
  NewNode,q,p:PNode;
begin
  q:=SubSPLink;
  p:=SubSPLink;
  while p<>nil do
  begin
    if TShare.compareIntegerStr(p^.MinVal,MinVal)=0 then
      Exit;

    q:=p;
    p:=p^.NextNode;
  end;

  new(NewNode);
  NewNode^.MinVal:=MinVal;
  NewNode^.MaxVal:=MaxVal;
  NewNode^.NextNode:=nil;

  if SubSPLink=nil then
    SubSPLink:=NewNode
  else q^.NextNode:=NewNode;
end;

constructor TSubSPOnlineLink.Create;
begin
  SubSPLink:=nil;
end;

procedure TSubSPOnlineLink.DelNode(MinVal,MaxVal:string);
var
  q,p:PNode;
begin
  q:=SubSPLink;
  p:=SubSPLink;

  while (p<>nil) and (not (TShare.compareIntegerStr(p^.MinVal,minVal)=0)) do
  begin
    q:=p;
    p:=p^.NextNode;
  end;

  if (p<>nil) then
  begin
    if p=q then
      SubSPLink:=p^.NextNode
    else q^.NextNode:=p^.NextNode;

    Dispose(p);
  end;
end;

function TSubSPOnlineLink.FindSubSP(SPID:string): boolean;
var
  p:PNode;
  minRlt,maxRlt:shortint;
begin
  Result:=false;
  p:=SubSPLink;

  while p<>nil do
  begin
    minRlt:=TShare.compareIntegerStr(spid,p^.MinVal);
    maxRlt:=TShare.compareIntegerStr(spid,p^.MaxVal);

    if ((minRlt=0) or (minRlt=1)) and ((maxRlt=0) or (maxRlt=-1)) then
    begin
      Result:=true;
      Break;
    end;

    p:=p^.NextNode;
  end;
end;

function TSubSPOnlineLink.toString:string;
var
  tmpStr:string;
  p:PNode;
begin
  p:=SubSPLink;
  while p<>nil do
  begin
    if tmpStr<>'' then
      tmpStr:=tmpStr+',['+p^.MinVal+','+p^.MaxVal+']'
    else tmpStr:='['+p^.MinVal+','+p^.MaxVal+']';

    p:=p^.NextNode;
  end;

  if tmpStr='' then  tmpStr:='null';

  result:=tmpStr;
end;

end.

⌨️ 快捷键说明

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