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

📄 mytemplate.pas

📁 通信控件
💻 PAS
字号:
unit myTemplate;

interface

const
  DEF_LIST_LENGTH = 128;

type

  TTemplateRec = record
    KeywordID : Integer;
    KeywordID2: Integer;
  end;
  PTemplateRec = ^TTemplateRec;

  TTemplateItem = record
    Rec: TTemplateRec;
  end;
  PTemplateItem = ^TTemplateItem;

  PTemplateItem_L = ^TTemplateItem_L;
  TTemplateItem_L = record
    Rec: TTemplateRec;
    Link: PTemplateItem_L;
  end;

  { TTemplatePool }

  TTemplateItemList = array of TTemplateItem;

  TTemplatePool = class
  private
    FList	 : TTemplateItemList;
    FCount : Integer;
    FCapacity: Integer;
    FEnable: Boolean;

  protected
    procedure Init;
    procedure Clear;

  public
    constructor Create(); overload;
    constructor Create(Source: TTemplatePool); overload;
    destructor Destroy(); override;

    property Count: Integer read FCount;
    property Enable: Boolean read FEnable;

    function Find(KeywordID: Integer): Boolean;
    function IndexOf(KeywordID: Integer): Integer;
    //function IndexOf(var Item: TTemplateItem;): Integer;
    function Add(var Item: TTemplateItem): Integer;
    procedure Put(Index: Integer; var Item: TTemplateItem);

  end;


implementation


  { TTemplatePool }

constructor TTemplatePool.Create();
begin
  Init;
end;
constructor TTemplatePool.Create(Source: TTemplatePool);
begin
end;
destructor TTemplatePool.Destroy();
begin
  Clear;
end;
procedure TTemplatePool.Init;
begin
  FillChar(FList, SizeOf(FList), 0);
  FCount := 0;
  FEnable:= FALSE;
end;
procedure TTemplatePool.Clear;
begin
end;
function TTemplatePool.Find(KeywordID: Integer): Boolean;
begin
  Result := IndexOf(KeywordID) >= 0;
end;
function TTemplatePool.IndexOf(KeywordID: Integer): Integer;
begin
  for Result := 0 to FCount-1 do
    if KeywordID = FList[Result].Rec.KeywordID then Exit;
  Result := -1;
end;
function TTemplatePool.Add(var Item: TTemplateItem): Integer;
begin
  Result := FCount;
  if Result = FCapacity then begin
    Result := -1; Exit;
  end;
  FList[Result] := Item;
  Inc(FCount);
end;
procedure TTemplatePool.Put(Index: Integer; var Item: TTemplateItem);
begin
end;

end.
 {因为现在种种局限所至,我们务必打破现在的状态,先从思想上清理问题的绝症,然后用新的规化杜绝以往
 错误的重现,在用新的规范化检验我们的结果,同时积极关注新技术新思想新市场的存在。极尽所能的合理
 发挥自身的能力,同时充分利用公司分配的人才和财力资源,使得各种事务经济和成果利益最大化成为可能
 之事。我们应理解,公司的利益就是我们自己的利益这条和谐发展潜在的实力,从而加速公司的发展。在重
 新构架之后的软件,将几下面几点来说明(1)提炼合理容易扩充的业务信息。(2)数据库外部操作归程更
 通用智然化,数据库系统基本不受限。(3)内存数据管理更安全,与数据库资料同步性更高,建立一套存取
 接口,在大量读取时采用无用空间压缩方式在网络上传输。(4)建立通用和适用我们系统的网络控制模块,
 使网络通信传输更透明化。(5)异常和日志更明细,特定异常发回我们的收集器中。(6)配置信息自动化更
 高,操作上方便一至化。(7)改进原有功能之外加更多实用和特性功能。(8)程序内部和外面模块化有基
 准。(9)程序流程做到,至上而下的控制,至下而上的反馈机智。(10)使用界面一致化,以简洁为目标、
 以办公格调谐一目、以功能归纳为宗旨。(11)建立良好的内部和外部测试环境。(12)使用资料和功能设
 计资料完备。
   上面就是我所要期待的目标了。愿在公司领导的商议之下负之以实际行动。
 }

{class function TITCP.TQuery(Pack: TTCPPack; ToIP: DWORD; ToPort: WORD; Cmd: WORD; var Vt: DWORD; var PPackR: PTCPPackR): Integer;
var
  Client: TITCPClient;
  Header: PSPKHeader;
begin
  Header := TCPPacket(0, Cmd);
  Move(Pack, Data(PWPKHeader(Header))^, SizeOf(Pack));
  Result := Header.wpkSize;
  Client := TConnectTo(ToIP, ToPort);
  if (Client <> nil) then
  begin
    if Result > 0 then
      Result := Client.WriteBuffer(Header, Header.wpkSize);
    if (Result > 0) then
      Result := Client.WriteBuffer(Pack.Pack, Pack.PackSize);
    if (PPackR <> nil) and (Result > 0) then begin
      Result := Client.ReadBuffer(Pointer(PPackR), SizeOf(TTCPPackR)-SizeOf(Pointer));
      if (Result > 0) and (PPackR.PackSize > 0) then
        Result := Client.ReadBuffer(PPackR.Pack, PPackR.PackSize);
    end;
    Client.Free;
  end;
end;}
{class function TITCP.TQuery(Pack: TTCPPack; ToIP: DWORD; ToPort: WORD; Cmd: WORD; var Vt: DWORD;
  OnRespond: TOnTCPQueryRespondNotify): Integer;
var
  PPackR: PTCPPackR;
begin
  Result := 0;
  PPackR := nil;
  
  if Assigned(OnRespond) then
    New(PPackR);

  Result := TQuery(Pack, ToIP, ToPort, Cmd, Vt, PPackR);

  if (Result > 0) and Assigned(OnRespond) then
    OnRespond(PPackR^);

  if PPackR <> nil then
    Dispose(PPackR);
end; }
{class function TITCP.TQuery(Pack: TTCPPack; ToIP: string; ToPort: WORD; Cmd: WORD; var Vt: DWORD;
	OnRespond: TOnTCPQueryRespondNotify): Integer;
begin
  Result := TQuery(Pack, WinSock.inet_addr(PChar(ToIP)), htons(ToPort), Cmd, Vt, OnRespond);
end;}
{class function TITCP.TQuery(PackBuf: Pointer; PackBufSize: Integer; ToIP: string; ToPort: WORD; Cmd, Operate, Para: WORD; OnRespond: TOnTCPQueryRespondNotify): Integer;
var
  Pack: TTCPPack;
begin
  FillChar(Pack, SizeOf(Pack), 0);
  Pack.Operate := Operate;
  Pack.Para := Para;
  Pack.PackSize := PackBufSize;
  Pack.Pack := PackBuf;
  Result := TQuery(Pack, ToIP, ToPort, Cmd, Cmd, OnRespond);
end;}
{class function TITCP.TQuery(var Pack; PackSize: Integer; Cmd: WORD; Operate: WORD; ToIP: string;
	ToPort: WORD; Para: WORD; OnRespond: TOnTCPQueryRespondNotify): TTCPPackR;
var
  TCPPack: TTCPPack;
begin
  FillChar(Result, SizeOf(Result), 0);
  FillChar(TCPPack, SizeOf(TCPPack), 0);
  if (ToIP <> '') and (ToPort > 0) then
  begin
    TCPPack.Operate := Operate;
    TCPPack.Para  := Para;
    TCPPack.PackSize := PackSize;
    TCPPack.Pack := AllocMem(PackSize);
    Move(Pack, TCPPack.Pack^, PackSize);
    //Result := TQuery(TCPPack, Cmd, ToIP, ToPort, 0, OnRespond);
  end;
end;}

⌨️ 快捷键说明

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