IniFiles 单元内容学习(一)

  IniFiles单元为borland delphi中读取后缀名为ini文件的单元集合,为方便开发人员在读取ini文件内容时提供一些基本操作函数,在该单元中一共有三个ini文件操作类(TCustomIniFile 、TIniFile、TMemIniFile),一个异常类EIniFileException,两个哈希类(TStringHash、THashedStringList),还有一个基础record(THashItem)。

  THashItem为数据存储单元,看下它的定义

 

  THashItem = record
    Next: PHashItem;      ---记录下一个hashItem的指针
    Key: string;                ---hashItem标识
    Value: Integer;          ---hashItem值
  end;

 

  TStringHash是数据单元ThashItem的集合类,其中定义了一个名为Buckets的PHashItem单元数组,还有一些对该数据的操作方法:

 

TStringHash = class
  private
    Buckets: array of PHashItem;                                      --定义对hashitem单元的数组集合
  protected
    function Find(const Key: string): PPHashItem;              --根据key值查找返回对应的ThashItem
    function HashOf(const Key: string): Cardinal; virtual;   --内部操作函数
  public
    constructor Create(Size: Cardinal = 256);
    destructor Destroy; override;
    procedure Add(const Key: string; Value: Integer);        --增加关键值和数值
    procedure Clear;
    procedure Remove(const Key: string);
    function Modify(const Key: string; Value: Integer): Boolean;  --修改关键值对应的数值
    function ValueOf(const Key: string): Integer;
  end;

 

 THashedStringList为一个tstringlist,其中用到tstringHash来增加寻找的速度。其中Tstringhash跟ThashedStringList和TstringList最大的不同在于TStringList中key为string值,而value为integer值。以下为自我写的一个对该hashedstringlist和stringhash操作的例子.

 

unit PrjHashOper;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IniFiles, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
    Stringhash: TStringHash;
    HashStrLst: THashedStringList;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  Stringhash := TStringHash.Create;
  HashStrLst := THashedStringList.Create;

  for i := 97 to 123 do
  begin
    Stringhash.Add(chr(i), i);
    HashStrLst.Add(Char(i) + '=' + IntToStr(i));      
  end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ShowMessage(HashStrLst.Values['z']);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(IntToStr(Stringhash.ValueOf('z')));
end;

 

end.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值