首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 软件教学-> 办公软件
双对象列表,双字符串列表_delphi教程
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
 

//在平时的应用中,经常会碰到一些,对象集TAs中每个A对象都对应每个B对象,对象TBs中每个对象B都对应一个A对象.  如果在A和B中各放一个Tobject属性来进行互相引用,也是非常不错的,但那样依赖关系太强了.
//同样,我们经常会碰到一些这样的情况,有一串的编号和一串的名称进行对应,我们经常要从编号找名称,或从名称找编号.
//所以,此处提取出来了两个对象TDoubleObjList和TDoubleString,虽然可以从它们上面抽象出一个基类,但由于在delphi中string的内存管理机制有点别扭,不属于强类型, 所以还是分开两个对象了.
完整代码如下:
unit DoubleObject;

interface
uses
  Contnrs, Classes;

type
  TDoubleObjList = class
  private
    ObjectList1: TObjectList;
    ObjectList2: TObjectList;
    FOwnsObjects: Boolean;
    procedure SetOwnsObjects(const Value: Boolean);
  public
    constructor Create;
    destructor Destroy; override;
    procedure Clear;
    property OwnsObjects: Boolean read FOwnsObjects write SetOwnsObjects;
    procedure AddData(AObject1, AObject2: TObject);

    function IndexOfData1(AIndex: Integer): TObject; overload;
    function IndexOfData1(AObject: TObject): Integer; overload;

    function IndexOfData2(AIndex: Integer): TObject; overload;
    function IndexOfData2(AObject: TObject): Integer; overload;

    function Data2GetData1(AObject: TObject): TObject;
    function Data1GetData2(AObject: TObject): TObject;

    function Count: Integer;
  end;

  TDoubleString = class
  private
    Strings1: TStringList;
    Strings2: TStringList;
  public
    constructor Create;
    destructor Destroy; override;
    procedure Clear;
    procedure AddString(AString1, AString2: string);

    function IndexOfData1(AIndex: Integer): string; overload;
    function IndexOfData1(AString: string): Integer; overload;

    function IndexOfData2(AIndex: Integer): string; overload;
    function IndexOfData2(AString: string): Integer; overload;

    function Data2GetData1(AString: string): string;
    function Data1GetData2(AString: string): string;

    function Count: Integer;
  end;
implementation

{ TDoubleObjList }

procedure TDoubleObjList.AddData(AObject1, AObject2: TObject);
begin
  ObjectList1.Add(AObject1);
  ObjectList2.Add(AObject2);
end;

procedure TDoubleObjList.Clear;
begin
  ObjectList1.Clear;
  ObjectList2.Clear;
end;

function TDoubleObjList.Count: Integer;
begin
  Result := ObjectList1.Count;
end;

constructor TDoubleObjList.Create;
begin
  FOwnsObjects := False;
  ObjectList1 := TObjectList.Create;
  ObjectList2 := TObjectList.Create;
end;

function TDoubleObjList.Data1GetData2(AObject: TObject): TObject;
begin
  Result := ObjectList2.Items[IndexOfData1(AObject)];
end;

function TDoubleObjList.Data2GetData1(AObject: TObject): TObject;
begin
  Result := ObjectList1.Items[IndexOfData2(AObject)];
end;

destructor TDoubleObjList.Destroy;
begin
  ObjectList1.Free;
  ObjectList2.Free;
  inherited;
end;

function TDoubleObjList.IndexOfData1(AObject: TObject): Integer;
begin
  Result := ObjectList1.IndexOf(AObject);
end;

function TDoubleObjList.IndexOfData1(AIndex: Integer): TObject;
begin
  Result := ObjectList1.Items[AIndex];
end;

function TDoubleObjList.IndexOfData2(AObject: TObject): Integer;
begin
  Result := ObjectList2.IndexOf(AObject);
end;

function TDoubleObjList.IndexOfData2(AIndex: Integer): TObject;
begin
  Result := ObjectList2.Items[AIndex];
end;

procedure TDoubleObjList.SetOwnsObjects(const Value: Boolean);
begin
  FOwnsObjects := Value;
  ObjectList1.OwnsObjects := Value;
  ObjectList2.OwnsObjects := Value;
end;

{ TDoubleString }

procedure TDoubleString.AddString(AString1, AString2: string);
begin
  Strings1.Add(AString1);
  Strings2.Add(AString2);
end;

procedure TDoubleString.Clear;
begin
  Strings1.Clear;
  Strings2.Clear;
end;

function TDoubleString.Count: Integer;
begin
  Result := Strings1.Count;
end;

constructor TDoubleString.Create;
begin
  Strings1 := TStringList.Create;
  Strings2 := TStringList.Create;
end;

function TDoubleString.Data1GetData2(AString: string): string;
begin
  Result := Strings2.Strings[IndexOfData1(AString)];
end;

function TDoubleString.Data2GetData1(AString: string): string;
begin
  Result := Strings1.Strings[IndexOfData2(AString)];
end;

destructor TDoubleString.Destroy;
begin
  Strings1.Free;
  Strings2.Free;
  inherited;
end;

function TDoubleString.IndexOfData1(AIndex: Integer): string;
begin
  Result := Strings1.Strings[AIndex];
end;

function TDoubleString.IndexOfData1(AString: string): Integer;
begin
  Result := Strings1.IndexOf(AString);
end;

function TDoubleString.IndexOfData2(AString: string): Integer;
begin
  Result := Strings2.IndexOf(AString);
end;

function TDoubleString.IndexOfData2(AIndex: Integer): string;
begin
  Result := Strings2.Strings[AIndex];
end;

end.


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·ASP.NET2.0连接SQL Server数据库详解-.NET教程,Asp.Net开发
·在.net中轻松掌握Windows窗体间的数据交互-.NET教程,.NET Framework
·Java中的类反射机制-JSP教程,Java技巧及代码
·小技巧让pdf文件与word文档之间自由地转换
·j2ee程序员应该掌握的linux知识-JSP教程,J2EE/EJB/服务器
·通过WMI获得硬盘和CPU的物理序列号(VB.net)-.NET教程,VB.Net语言
·firfox浏览器开发人公开firfox2.0开发计划
·VB.net入门(10):补充:类~属性-.NET教程,VB.Net语言
·office2003实战秘笈之excel轻松制胜招
·C#编码规范.doc-.NET教程,C#语言
最新文章
·天涯试水网络口碑营销 邢明:希望与"关键词"媲美_站长访谈
·美梨网站长冰寒的商务之道_站长访谈
·白手起家 新网站流量快速提高之道_站长心得
·照片处理 photoshop简单制作照片柔光效果_photoshop教程
·网络百戒 ---网页外观_站长心得
·utf-8转换gb2312编码,解决统计google搜索来源关键字乱_google推广
·googleadsense作弊不是技术的较量_google推广
·google改进搜索服务 企业可在local更新资料_google推广
·rss订阅对你的网站搜索表现有好处吗?_站长心得
·15种简洁有效的网站推广方法_站长心得
相关主题
西部数码虚拟主机

友情链接
CNNIC 西部数码
万网 自助建站
虚拟主机 asp空间
域名注册 域名
域名申请 主页空间
论坛空间 网站空间
国际域名 虚拟空间
空间租用 DDOS防火墙
成都主机托管 四川主机托管
主机租用 服务器租用
网站目录 自助建站
虚拟主机 网址大全
软件下载
自助链接
虚拟主机资讯 特价虚拟主机
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
发表评论 打印  刷新     关闭