亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

雙對象列表,雙字符串列表

2019-11-18 18:05:35
字體:
來源:轉載
供稿:網友
 

//在平時的應用中,經常會碰到一些,對象集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.


上一篇:如何判斷一個機器的MSSQL是否啟動

下一篇:設計模式之singleton

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧洲成人免费视频| 成人午夜小视频| 欧美激情视频在线| 成人高清视频观看www| 色综合久久久888| 国产亚洲aⅴaaaaaa毛片| 91色中文字幕| 国产成人av网址| 国产精品久久久久久久久久久不卡| 欧美孕妇性xx| 亚洲精品国产成人| 最近中文字幕mv在线一区二区三区四区| 欧美乱大交xxxxx| 中文字幕av一区二区三区谷原希美| 日韩在线视频线视频免费网站| 97成人在线视频| 久久精品亚洲精品| 日本19禁啪啪免费观看www| 欧美日韩另类字幕中文| 亚洲国产精品久久久久秋霞不卡| 久久久电影免费观看完整版| 精品亚洲永久免费精品| 亚洲第一福利网站| 久久精品国产综合| 日韩欧美精品中文字幕| 日韩亚洲第一页| 欧美伊久线香蕉线新在线| 久久精品91久久久久久再现| 欧美另类极品videosbest最新版本| 欧美激情亚洲视频| 中文字幕成人精品久久不卡| 全色精品综合影院| 国产精品网站入口| 国产又爽又黄的激情精品视频| 久久91亚洲精品中文字幕| 国产精品久久久久久久一区探花| 国产精品手机播放| 97av视频在线| 日韩欧美亚洲一二三区| 国产中文字幕日韩| 日韩精品亚洲元码| 欧美另类交人妖| 97国产在线视频| 成人欧美一区二区三区黑人孕妇| 精品无人区乱码1区2区3区在线| 久久久女女女女999久久| 91在线精品播放| 亚洲国产又黄又爽女人高潮的| 日本一区二区在线免费播放| 久久久人成影片一区二区三区观看| 亚洲人成绝费网站色www| 亚洲国产女人aaa毛片在线| 亚洲变态欧美另类捆绑| 成人av色在线观看| 亚洲va欧美va在线观看| 午夜精品视频网站| 中文字幕亚洲欧美| 日本欧美国产在线| 97免费在线视频| 青青草原成人在线视频| 久久成人综合视频| 久久久久女教师免费一区| 久久久中精品2020中文| 久久久久久久久电影| 91久久国产精品| 日韩中文字幕在线视频| 亚洲国产日韩精品在线| 成人中文字幕在线观看| 精品中文字幕在线观看| 亚洲美女又黄又爽在线观看| 日本人成精品视频在线| 日韩中文字幕欧美| 日本久久精品视频| 精品久久久久久久中文字幕| 亚洲精品乱码久久久久久金桔影视| 亚洲自拍偷拍色片视频| 日韩成人网免费视频| 欧美精品电影在线| 欧美一级电影免费在线观看| 91精品国产99久久久久久| 97成人在线视频| 欧美插天视频在线播放| 国产日韩一区在线| 亚洲大尺度美女在线| 久久久久久网站| 成人h视频在线| 在线看福利67194| 欧美激情一二区| 在线观看亚洲视频| www.日韩免费| 久久综合五月天| 国产精品久久久久久久久久| 精品国产自在精品国产浪潮| 欧美在线亚洲一区| 欧美国产在线电影| 欧美中文在线视频| 日韩激情av在线免费观看| 久久久久久亚洲精品不卡| 91国内在线视频| 国产精品扒开腿爽爽爽视频| 色综合久久悠悠| 动漫精品一区二区| 一区二区三区精品99久久| 国产日韩欧美视频在线| 色无极亚洲影院| 97婷婷涩涩精品一区| 亚洲视频自拍偷拍| 欧美视频中文在线看| 国产精品免费久久久久久| 欧美wwwwww| 欧美专区福利在线| 久久久久久亚洲精品不卡| 日本aⅴ大伊香蕉精品视频| 日本一本a高清免费不卡| 精品亚洲一区二区| 国产精品狼人色视频一区| 国产精品一二三视频| 国产欧美一区二区三区在线看| 91精品在线一区| 亚洲精品影视在线观看| 日韩中文字幕不卡视频| 亚洲免费视频网站| 精品中文字幕乱| 97涩涩爰在线观看亚洲| 日韩av在线影院| 久久精品国产清自在天天线| 欧美日本精品在线| 欧美成人免费在线观看| 精品久久久久久中文字幕大豆网| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产精品久久久久久久久久新婚| 国产精品一区二区三区久久| 国产网站欧美日韩免费精品在线观看| 中文字幕精品久久久久| 久久久久久亚洲精品| 97视频在线观看免费高清完整版在线观看| 在线精品高清中文字幕| 成人激情在线播放| 亚洲激情在线视频| 国产欧美精品一区二区三区-老狼| 日韩在线播放一区| 97视频com| 国产在线一区二区三区| 国内精品免费午夜毛片| 亚洲国产精品99久久| 成人欧美一区二区三区在线湿哒哒| 欧美激情欧美激情| 欧美孕妇性xx| 成人在线免费观看视视频| 亚洲精品成人网| 91网在线免费观看| 欧美日韩在线看| 中文字幕亚洲欧美日韩在线不卡| 欧美www在线| 欧美日韩福利电影| 久久91亚洲精品中文字幕奶水| 亚洲欧美另类国产| 亚洲综合中文字幕68页| 欧美视频国产精品| 欧美激情亚洲另类| 97热在线精品视频在线观看| 国产精品久久久久久婷婷天堂| 久久影视电视剧免费网站清宫辞电视| 日韩av大片在线|