首页 > 编程语言 >delphi泛型模板编程

delphi泛型模板编程

时间:2023-10-03 11:34:29浏览次数:27  
标签:TTxInfo end string delphi PeopleList 泛型 模板

delphi泛型模板编程

泛型模板编程的关键:泛型作用体现在模板,体现在虚实之间相互转换,以虚概实,以实就虚。

unit TxInfo;

interface

uses
  System.Types,
  System.Classes,
  System.SysUtils,
  Generics.Collections;

type
  TPeople = record
    Name: string;
    Age: string;
  end;

type
  TTxInfo<T> = class
  public
    PeopleList: TList<T>;
  public
    constructor Create;
    destructor Destroy; override;
  private
    function ProcessInfo(aAPeopleStr: string): T; virtual; abstract;
  public
    procedure GetInfo(AStr: string); overload;
  end;

type
  TMyNetInfo<T> = class(TTxInfo<T>)//泛型类可以继承
  public
    function ProcessInfo(APeopleStr: string): T; override;
  end;

implementation

{ TTxHttp }
constructor TTxInfo<T>.Create;
begin
  inherited Create();
  PeopleList := TList<T>.Create;
end;

destructor TTxInfo<T>.Destroy;
begin
  PeopleList.Free;
  inherited Destroy;
end;

procedure TTxInfo<T>.GetInfo(AStr: string);
var
  m_Info: T;
begin
  PeopleList.Clear;
  m_Info := ProcessInfo(AStr);
  PeopleList.Add(m_Info);
end;

{ TMyNetInfo<TFilmInfoT> }
function TMyNetInfo<T>.ProcessInfo(APeopleStr: string): T;
begin
  var pepole: TPeople;
  pepole.Name:= APeopleStr;
  Result:=T(Pointer(@pepole)^);//实转虚,泛型就是可以在虚实之间相互转换
end;

end.

  

  

标签:TTxInfo,end,string,delphi,PeopleList,泛型,模板
From: https://www.cnblogs.com/hnxxcxg/p/17740909.html

相关文章

  • C++模板元编程(C++ template metaprogramming)
    实验平台:Win7,VS2013Community,GCC4.8.3(在线版) 所谓元编程就是编写直接生成或操纵程序的程序,C++模板给C++语言提供了元编程的能力,模板使C++编程变得异常灵活,能实现很多高级动态语言才有的特性(语法上可能比较丑陋,一些历史原因见下文)。普通用户对C++模板的使用可能不是很......
  • Destoon模板存放及调用规则
    一、模板存放及调用规则模板存放于系统template目录,template目录下的一个目录例如template/default/即为一套模板模板文件以.htm为扩展名,可直接存放于模板目录例如template/default/index.htm也可以存放于模板目录的子目录里例如template/default/member/index.htm在PHP......
  • destoon9.0游戏自媒体类型综合资讯门户模板
    随着时代发展,自媒体资讯适合当前的互联网情形。呕心沥血开发的一套自媒体综合门户网站模板,本模板采用纯手写开发,带会员中心。首页,列表页,内容页,搜索页面精心编写,非常大气,并配移动端。注意:模板目前只用了资讯模块,会员模块,其他模块都禁用了。特色:1、非常适合做资讯门户站。2、首页,列......
  • 单源最短路模板
    SPFA#include<bits/stdc++.h>#definerintregisterint#defineendl'\n'usingnamespacestd;constintN=1e5+5;constintM=1e6+5;constintinf=1e9;inth[N],e[M],ne[M],dist[N],w[M];intn,m,s,idx;queue<int>......
  • 【13.0】Fastapi中的Jinja2模板渲染前端页面
    【一】创建Jinja2引擎#必须模块fromfastapiimportRequest#必须模块fromfastapi.templatingimportJinja2Templates#创建子路由application=APIRouter()#创建前端页面配置templates=Jinja2Templates(directory='./coronavirus/templates')#初始化数据库......
  • 算法模板
    算法模板1.排序(1)快速排序(NoSTL)#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongintn,a[100010];voiddfs(intl,intr){ if(l>=r) return; intpos=(l+r)>>1; intx=a[pos]; inti=l,j=r; while(i<=j) {......
  • springboot web开发整合Freemarker 模板引擎
    目录Freemarker添加依赖配置文件ymlcontrollerhtmlFreemarker简介:FreeMarker是一款模板引擎:即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组......
  • java 实现模板方法模式
    模板方法模式(TemplateMethodPattern)是一种行为型设计模式,它定义了一个算法的骨架,将具体的步骤延迟到子类中实现。模板方法模式使得子类可以重新定义算法的某些步骤,而不改变算法的结构。以下是一个简单的Java示例,演示如何实现模板方法模式:首先,定义一个抽象类Game,它包含一个模板方......
  • 模板
    前缀和s[i]=s[i-1]+a[i];s[r]-s[l-1]二维前缀和s[i][j]+=s[i-1][j]+s[i][j-1]-s[i-1][j-1]s[i][j]-s[i-1][j]-s[i][j-1]+s[i-1][j-1]差分d[l]++,d[r+1]--;二维差分d[x1][y1]++,d[x2+1][y2+1]++;d[x1][y2+1]--,d[x2......
  • 快读“慢”写模板
    //万能头文件#include<bits/stdc++.h>usingnamespacestd;template<typenameT>inlineTread(T&ret){charc;intf=1;ret=0; //Don'tforgetthis!for(c=getchar();c<'0'||c>'9';c=getchar())if(c==&......