📄 mytemplate.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 + -