程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi 中 位 的使用(3) - TBits

Delphi 中 位 的使用(3) - TBits

編輯:Delphi

TBits 直接繼承自 TObject, 它只擴充出 2 個屬性、1 個方法:

TBits.Size  //需要使用的 "位" 數  
TBits.Bits[] //默認的數組屬性, 用於讀寫每個 "位"; 用 True 表示 1, 用 False 表示 0  
TBits.OpenBit //獲取第一個是 0 的 "位" 的位置  

  簡單示例:

procedure TForm1.Button1Click(Sender: TObject); 
var 
 bs: TBits; 
begin 
 bs := TBits.Create; 
 {使用前應該先設置 Size, 這是需要容納的 "位" 的數目}  
 bs.Size := 3; 
 {賦值、取值都通過默認的數組屬性 bs.Bits[]} 
 bs[0] := True; 
 bs[1] := False; 
 bs[2] := True; 
 ShowMessage(BoolToStr(bs[1], True)); {False} 
 ShowMessage(BoolToStr(bs[2], True)); {True} 
 {OpenBit 方法獲取的是第一個是 0 的位置} 
 ShowMessage(IntToStr(bs.OpenBit));  {1; 這表示是第二個位} 
 bs.Free; 
end; 

  OpenBit 方法的主要用途 - 把第一個非 1 的 "位" 設置為 1:

var bs: TBits; 
 
procedure TForm1.Button1Click(Sender: TObject); 
var 
 i: Integer; 
 fn: Integer; 
begin 
 {初始化並賦隨機值} 
 bs.Size := 8; 
 for i := 0 to bs.Size do bs[i] := Boolean(Random(2)); 
 
 {把第一個非 1 的 "位" 設置為 1} 
 fn := bs.OpenBit; 
 if fn <= bs.Size then bs[fn] := True; 
end; 
 
initialization 
 bs := TBits.Create; 
 Randomize; 
finalization 
 if Assigned(bs) then bs.Free; 
 
end. 

  用 TBits 實現前面的例子(窗體設計與測試效果同前):

unit Unit1; 
 
interface 
 
uses 
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
 Dialogs, StdCtrls, CheckLst; 
 
type 
 TForm1 = class(TForm) 
  CheckListBox1: TCheckListBox; 
  Button1: TButton; 
  Button2: TButton; 
  Button3: TButton; 
  Button4: TButton; 
  procedure FormCreate(Sender: TObject); 
  procedure Button1Click(Sender: TObject); 
 end; 
 
var 
 Form1: TForm1; 
 
implementation 
 
{$R *.dfm} 
 
var bs: TBits; 
 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
 CheckListBox1.Items.CommaText := 'A,B,C,D,E,F,G,H'; 
 Button1.Caption := '保存狀態'; 
 Button2.Caption := '恢復狀態'; 
 Button3.Caption := '全選'; 
 Button4.Caption := '全不選'; 
 Button1.Tag := 1; 
 Button2.Tag := 2; 
 Button3.Tag := 3; 
 Button4.Tag := 4; 
 Button2.OnClick := Button1.OnClick; 
 Button3.OnClick := Button1.OnClick; 
 Button4.OnClick := Button1.OnClick; 
end; 
 
procedure TForm1.Button1Click(Sender: TObject); 
var 
 i: Integer; 
begin 
 for i := 0 to CheckListBox1.Count - 1 do 
  case TButton(Sender).Tag of 
   1: bs[i] := CheckListBox1.Checked[i]; 
   2: CheckListBox1.Checked[i] := bs[i]; 
   3: CheckListBox1.Checked[i] := True; 
   4: CheckListBox1.Checked[i] := False; 
  end; 
end; 
 
initialization 
 bs := TBits.Create; 
finalization 
 if Assigned(bs) then bs.Free; 
 
end. 

  Delphi 在下面單元的源碼中都有 TBits 的應用:

  Menus、Buttons、ComCtrls、DBClIEnt、DBTables、DBCommon、DesignEditors

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved