亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? oobjects.pas

?? 適用于 Delphi 2-7 的Delphi控件
?? PAS
字號(hào):
{|----------------------------------------------------------------------
 | Unit:        OObjects
 |
 | Author:      Egbert van Nes
 |
 | Description: Some changed TLists (more compatible with Borland Pascal 7)
 |
 | Copyright (c) 2000  Egbert van Nes
 |   All rights reserved
 |   Disclaimer and licence notes: see license.txt
 |
 |----------------------------------------------------------------------
}
unit OObjects;
interface
uses Classes {$IFDEF CS_TRACE} , CodeSiteLogging {$ENDIF};
const
 MaxCollectionSize = Maxint div (SizeOf(Integer) * 2);
 
type
 TOCollection = class(TList)
 public
  constructor Create(ACapacity: Integer);
  procedure AtFree(Index: Integer);
  procedure FreeAll;
  procedure DoFree(Item: Pointer);
  procedure FreeItem(Item: Pointer); virtual;
  destructor Destroy; override;
 end;
 
 TNoOwnerCollection = class(TOCollection)
 public
  procedure FreeItem(Item: Pointer); override;
 end;
 
 { TSortedCollection object }
 
 TSortedCollection = class(TOCollection)
 public
  Duplicates: Boolean;
  constructor Create(ACapacity: Integer);
  function Compare(Key1, Key2: Pointer): Integer; virtual; abstract;
  function IndexOf(Item: Pointer): Integer; virtual;
  procedure Add(Item: Pointer); virtual;
  procedure AddReplace(Item: Pointer); virtual;
  {if duplicate then replace the duplicate else add}
  function KeyOf(Item: Pointer): Pointer; virtual;
  function Search(Key: Pointer; var Index: Integer): Boolean; virtual;
 end;
 
 { TStrCollection object }
 
 TStrCollection = class(TSortedCollection)
 public
  function Compare(Key1, Key2: Pointer): Integer; override;
  procedure FreeItem(Item: Pointer); override;
 end;
 
implementation

uses SysUtils;

constructor TOCollection.Create(ACapacity: Integer);
begin
  {$IFDEF CS_TRACE}CodeSite.EnterMethod( Self, 'Create' );{$ENDIF}
 inherited Create;
 SetCapacity(ACapacity);
 {Delta is automatic in TList}
  {$IFDEF CS_TRACE}CodeSite.ExitMethod( Self, 'Create' );{$ENDIF}
end;

destructor TOCollection.Destroy;
begin
  {$IFDEF CS_TRACE}CodeSite.EnterMethod( Self, 'Destroy' );{$ENDIF}
 FreeAll;
 inherited Destroy;
  {$IFDEF CS_TRACE}CodeSite.ExitMethod( Self, 'Destroy' );{$ENDIF}
end;

procedure TOCollection.AtFree(Index: Integer);
var
 Item: Pointer;
begin
  {$IFDEF CS_TRACE}CodeSite.EnterMethod( Self, 'AtFree' );{$ENDIF}
 Item := Items[Index];
 Delete(Index);
 FreeItem(Item);
  {$IFDEF CS_TRACE}CodeSite.ExitMethod( Self, 'AtFree' );{$ENDIF}
end;

procedure TOCollection.FreeAll;
var
 I: Integer;
begin
  {$IFDEF CS_TRACE}CodeSite.EnterMethod( Self, 'FreeAll' );{$ENDIF}
 try
  for I := 0 to Count - 1 do
   FreeItem(Items[I]);
 finally
  Count := 0;
 end;
  {$IFDEF CS_TRACE}CodeSite.ExitMethod( Self, 'FreeAll' );{$ENDIF}
end;

procedure TOCollection.DoFree(Item: Pointer);
begin
  {$IFDEF CS_TRACE}CodeSite.EnterMethod( Self, 'DoFree' );{$ENDIF}
 AtFree(IndexOf(Item));
  {$IFDEF CS_TRACE}CodeSite.ExitMethod( Self, 'DoFree' );{$ENDIF}
end;

procedure TOCollection.FreeItem(Item: Pointer);
begin
  {$IFDEF CS_TRACE}CodeSite.EnterMethod( Self, 'FreeItem' );{$ENDIF}
 if (Item <> nil) then
  with TObject(Item) as TObject do
   Free;
  {$IFDEF CS_TRACE}CodeSite.ExitMethod( Self, 'FreeItem' );{$ENDIF}
end;

{----------------------------------------------------------------virtual;
  Implementing TNoOwnerCollection
  -----------------------------------------------------------------}

procedure TNoOwnerCollection.FreeItem(Item: Pointer);
begin
  {$IFDEF CS_TRACE}CodeSite.EnterMethod( Self, 'FreeItem' );{$ENDIF}
  {$IFDEF CS_TRACE}CodeSite.ExitMethod( Self, 'FreeItem' );{$ENDIF}
end;

{ TSortedCollection }

constructor TSortedCollection.Create(ACapacity: Integer);
begin
  {$IFDEF CS_TRACE}CodeSite.EnterMethod( Self, 'Create' );{$ENDIF}
 inherited Create(ACapacity);
 Duplicates := False;
  {$IFDEF CS_TRACE}CodeSite.ExitMethod( Self, 'Create' );{$ENDIF}
end;

function TSortedCollection.IndexOf(Item: Pointer): Integer;
var
 I: Integer;
begin
  {$IFDEF CS_TRACE}CodeSite.EnterMethod( Self, 'IndexOf' );{$ENDIF}
 IndexOf := -1;
 if Search(KeyOf(Item), I) then
  begin
   if Duplicates then
    while (I < Count) and (Item <> Items[I]) do
     inc(I);
   if I < Count then IndexOf := I;
  end;
  {$IFDEF CS_TRACE}CodeSite.ExitMethod( Self, 'IndexOf' );{$ENDIF}
end;

procedure TSortedCollection.AddReplace(Item: Pointer);
var
 Index: Integer;
begin
  {$IFDEF CS_TRACE}CodeSite.EnterMethod( Self, 'AddReplace' );{$ENDIF}
 if Search(KeyOf(Item), Index) then
  Delete(Index);
 Add(Item);
  {$IFDEF CS_TRACE}CodeSite.ExitMethod( Self, 'AddReplace' );{$ENDIF}
end;

procedure TSortedCollection.Add(Item: Pointer);
var
 I: Integer;
begin
  {$IFDEF CS_TRACE}CodeSite.EnterMethod( Self, 'Add' );{$ENDIF}
 if not Search(KeyOf(Item), I) or Duplicates then
  Insert(I, Item);
  {$IFDEF CS_TRACE}CodeSite.ExitMethod( Self, 'Add' );{$ENDIF}
end;

function TSortedCollection.KeyOf(Item: Pointer): Pointer;
begin
  {$IFDEF CS_TRACE}CodeSite.EnterMethod( Self, 'KeyOf' );{$ENDIF}
 KeyOf := Item;
  {$IFDEF CS_TRACE}CodeSite.ExitMethod( Self, 'KeyOf' );{$ENDIF}
end;

function TSortedCollection.Search(Key: Pointer; var Index: Integer): Boolean;
var
 L, H, I, C: Integer;
begin
  {$IFDEF CS_TRACE}CodeSite.EnterMethod( Self, 'Search' );{$ENDIF}
 Search := False;
 L := 0;
 H := Count - 1;
 while L <= H do
  begin
   I := (L + H) shr 1;
   C := Compare(KeyOf(Items[I]), Key);
   if C < 0 then
    L := I + 1
   else
    begin
     H := I - 1;
     if C = 0 then
      begin
       Search := True;
       if not Duplicates then L := I;
      end;
    end;
  end;
 Index := L;
  {$IFDEF CS_TRACE}CodeSite.ExitMethod( Self, 'Search' );{$ENDIF}
end;

{ TStrCollection }

function TStrCollection.Compare(Key1, Key2: Pointer): Integer;
begin
  {$IFDEF CS_TRACE}CodeSite.EnterMethod( Self, 'Compare' );{$ENDIF}
 Compare := StrComp(Key1, Key2);
  {$IFDEF CS_TRACE}CodeSite.ExitMethod( Self, 'Compare' );{$ENDIF}
end;

procedure TStrCollection.FreeItem(Item: Pointer);
begin
  {$IFDEF CS_TRACE}CodeSite.EnterMethod( Self, 'FreeItem' );{$ENDIF}
 StrDispose(Item);
  {$IFDEF CS_TRACE}CodeSite.ExitMethod( Self, 'FreeItem' );{$ENDIF}
end;

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美年轻男男videosbes| 91一区在线观看| 欧美成人aa大片| 国模冰冰炮一区二区| 国产欧美日本一区视频| 国产iv一区二区三区| √…a在线天堂一区| 色偷偷久久人人79超碰人人澡| 亚洲综合清纯丝袜自拍| 欧美日韩国产综合草草| 美国三级日本三级久久99| 精品久久国产97色综合| 成人av影院在线| 亚洲宅男天堂在线观看无病毒| 欧美一区二区三区在线观看| 激情综合色综合久久综合| 国产欧美日韩视频一区二区 | 五月婷婷综合激情| 日韩一级完整毛片| 国产99精品国产| 亚洲激情av在线| 欧美mv和日韩mv的网站| av中文字幕一区| 婷婷综合另类小说色区| 久久久国产精品午夜一区ai换脸| bt欧美亚洲午夜电影天堂| 亚洲成av人影院在线观看网| 精品免费99久久| 一本到不卡精品视频在线观看| 日日骚欧美日韩| 亚洲国产精品激情在线观看| 欧美日韩三级一区二区| 国产成人亚洲精品青草天美| 亚洲精品乱码久久久久久久久| 精品国产一区久久| 色哟哟一区二区三区| 久久超碰97中文字幕| 亚洲精品免费在线| 26uuu久久天堂性欧美| 日本久久电影网| 国产精品99久久久久久久vr| 亚洲成人福利片| 国产午夜三级一区二区三| 欧美日韩一区高清| 波多野结衣亚洲| 久久99久久99| 亚洲国产精品久久久久婷婷884 | 亚洲欧美另类小说视频| 久久久久青草大香线综合精品| 欧美中文字幕一区二区三区| 成人av一区二区三区| 琪琪久久久久日韩精品| 亚洲午夜久久久久中文字幕久| 欧美国产一区在线| 久久先锋资源网| 欧美一级欧美三级在线观看| 欧美自拍丝袜亚洲| 色婷婷av一区二区三区gif | 欧美猛男超大videosgay| 91蜜桃在线免费视频| 国产suv一区二区三区88区| 日本欧美一区二区| 天天免费综合色| 一区二区久久久久久| 亚洲品质自拍视频| 国产精品对白交换视频| 国产精品视频一二三| 久久蜜臀精品av| 久久久亚洲综合| 久久久亚洲综合| 久久久国际精品| 国产午夜精品一区二区| 久久女同性恋中文字幕| 亚洲精品一线二线三线无人区| 欧美一区二区三区在线电影| 欧美日韩黄色影视| 51精品秘密在线观看| 欧美高清激情brazzers| 欧美美女激情18p| 欧美一区二区在线不卡| 欧美日韩国产大片| 日韩欧美视频在线| 26uuu色噜噜精品一区| 久久久午夜电影| 欧美—级在线免费片| 18成人在线视频| 悠悠色在线精品| 午夜精品久久久久久久蜜桃app| 亚洲成在人线在线播放| 日本色综合中文字幕| 久久 天天综合| 国产精品一区二区不卡| 99re66热这里只有精品3直播| 色综合久久久久综合99| 欧美日韩电影一区| 欧美va日韩va| 国产精品五月天| 亚洲激情六月丁香| 婷婷激情综合网| 精品在线视频一区| 国产99久久久国产精品免费看| 91在线视频官网| 69堂成人精品免费视频| 国产日韩欧美高清在线| 亚洲精品国久久99热| 蜜桃av一区二区在线观看| 成人综合在线网站| 欧美午夜精品久久久久久孕妇| 欧美一区二区三区影视| 国产精品卡一卡二| 午夜不卡av在线| 成人午夜精品在线| 欧美三级乱人伦电影| www国产成人免费观看视频 深夜成人网| 国产精品免费视频网站| 亚洲香肠在线观看| 韩国女主播一区| 精品视频在线看| 欧美激情在线免费观看| 性欧美大战久久久久久久久| 国产一区二区三区四区五区美女| 91在线观看视频| 精品99999| 亚洲第一久久影院| 成人免费毛片app| 欧美一区二区三区在线| 亚洲欧美一区二区三区极速播放| 日韩精品免费专区| 成人免费看黄yyy456| 欧美一区二区三区小说| 亚洲精品伦理在线| 国产成人精品免费| 欧美一区在线视频| 亚洲精品中文字幕在线观看| 激情文学综合网| 欧美日韩精品一二三区| 亚洲欧洲制服丝袜| 国产91精品久久久久久久网曝门| 777午夜精品视频在线播放| 亚洲天堂成人在线观看| 国产乱码精品一区二区三| 欧美性猛交xxxx黑人交| 国产精品日韩成人| 国产一区二区0| 日韩天堂在线观看| 日韩激情一区二区| 色天天综合久久久久综合片| 国产日产欧美一区| 精品在线观看视频| 在线综合+亚洲+欧美中文字幕| 亚洲一区二区三区视频在线播放| 成人综合婷婷国产精品久久 | 色一情一乱一乱一91av| 久久久久久免费网| 久久se精品一区精品二区| 欧美浪妇xxxx高跟鞋交| 一区二区三区在线不卡| 91麻豆免费视频| 国产精品久久久久久妇女6080 | 欧美日韩国产成人在线91| 亚洲久本草在线中文字幕| 99久久伊人精品| 中文字幕一区二区三区av| 成人精品电影在线观看| 国产天堂亚洲国产碰碰| 国产乱码一区二区三区| 精品福利在线导航| 国模娜娜一区二区三区| 久久亚洲二区三区| 国产91丝袜在线观看| 久久精品人人爽人人爽| 成人性生交大片免费看中文| 中文一区在线播放| av午夜精品一区二区三区| 18欧美亚洲精品| 在线免费不卡视频| 亚洲电影视频在线| 在线91免费看| 国内精品免费**视频| 国产日韩欧美一区二区三区综合| 成人丝袜高跟foot| 亚洲男同1069视频| 欧美亚洲禁片免费| 免费成人深夜小野草| 久久免费偷拍视频| 成人精品免费网站| 一区二区在线观看视频在线观看| 欧美亚洲另类激情小说| 美国av一区二区| 国产精品美女久久久久久2018 | 亚洲欧洲精品一区二区三区| 91久久久免费一区二区| 婷婷一区二区三区| 中文字幕精品综合| 在线免费观看日韩欧美| 久久精品国产99国产精品| 国产亚洲欧洲一区高清在线观看| 91网上在线视频| 日本视频免费一区| 精品国产伦理网|