Tiny Mouse's WorkshopソフトウェアライブラリTExIniFile
INI ファイル操作コンポーネント TExIniFile
●はじめに
 《TExIniFile》は、INI ファイルを読み書きする、Delphi 用のコンポーネントで
す。
 Delphi で INI ファイルを操作するには、TIniFile のオブジェクトを使う方法が
ありますが、フォームにコンポーネントを貼り付けて簡単に使用できます。

 《TExIniFile》には、次の特徴があります。

・TMemIniFile をベースにしている
・読み書きする INI ファイルを簡単に指定できる
・ReadFont() 、ReadWin() 等、特定のデータ型やクラスの変数の値を扱う関数が追
 加されている
・基本的に TIniGT コンポーネントと互換
●確認済の動作環境
 Windowx XP Home + Delphi 6 Personal
 Windows XP Home + Delphi 7 Professional
●インストール方法

 Delphi の「既存パッケージへのコンポーネントのインストール」の手順に従っ
て、FileVerInfo.pas をインストールして下さい。インストールされると、コンポ
ーネントパレットの「UserCtrls」タブに登録されます。

●使用方法

 1)フォームにコンポーネントを追加します。

 2)BaseDir、FileName 等のプロパティを設定します。デフォルトのままの場合、
  実行ファイルと同じフォルダの、実行ファイルの名前の拡張子を「.ini」に変
  更したファイルを読み書きします。

 3)ReadString() 、WriteString() 等のメソッドを使って INI ファイルを読み書
  きします。

●プロパティ

◎BaseDir: TBaseDir

 FileName プロパティのファイル名にパスが含まれていない場合のパスを指定しま
す。次の値を指定できます。

 bdWindows … Windows のシステムフォルダ
 ddApplication … 実行ファイルと同じフォルダ (デフォルト)
 bdAppData … アプリケーションデータ
 bdNone … 指定なし

◎FileName: String

 読み書きする INI ファイルの名前を指定します。フルパス指定することもできま
す。その場合、BaseDir プロパティの指定は無効です。
 FileName プロパティが未指定の場合は、実行ファイルの名前の拡張子を「.ini」
に変更したファイル名になります。通常の使用では、このプロパティは未指定で構
いません。

◎Fence: TFence

 ReadString() や WriteString() 等の文字列用メソッドで、値の前後につける文
字を指定します。次の値を指定できます。

 fcNone … 指定なし (デフォルト)
 fcDoubleQuote … 引用符「"」をつける
 fcSingleQuote … 引用符「'」をつける

 fcNone を指定すると、値の前後の空白や引用符「"」や「'」が読み書きできませ
ん。

◎CaseSensitive: Boolean

 セクションおよびキーの名前を大文字と小文字を区別して扱うかどうかを指定し ます。TIniFile と同じ。

●メソッド (TIniFile と同じ)

◎ReadString(const Section, Ident, Default: String): String;
◎WriteString(const Section, Ident, Value: String);

◎ReadInteger(const Section, Ident: String; Default: Longint): Longint;
◎WriteInteger(const Section, Ident: String; Value: Longint);

◎ReadBool(const Section, Ident: String; Default: Boolean): Boolean;
◎WriteBool(const Section, Ident: String; Value: Boolean);

◎ReadBinaryStream(const Section, Name: String; Value: TStream): Integer;
◎ReadDate(const Section, Name: String; Default: TDateTime): TDateTime;
◎ReadDateTime(const Section, Name: String; Default: TDateTime): TDateTime;
◎ReadFloat(const Section, Name: String; Default: Double): Double;
◎ReadTime(const Section, Name: String; Default: TDateTime): TDateTime;
◎WriteBinaryStream(const Section, Name: String; Value: TStream);
◎WriteDate(const Section, Name: String; Value: TDateTime);
◎WriteDateTime(const Section, Name: String; Value: TDateTime);
◎WriteFloat(const Section, Name: String; Value: Double);
◎WriteTime(const Section, Name: String; Value: TDateTime);

◎SectionExists(const Section: String): Boolean;
◎ValueExists(const Section, Ident: String): Boolean;
◎ReadSection(const Section: String; Strings: TStrings);
◎ReadSections(Strings: TStrings);
◎ReadSectionValues(const Section: String; Strings: TStrings);
◎EraseSection(const Section: String);
◎DeleteKey(const Section, Ident: String);
◎UpdateFile;

●メソッド (TIniFile に追加)

◎ReadColor(const Section, Item: String; Default: TColor): Integer;
◎WriteColor(const Section, Item: String; Value: TColor);
◎ReadHex(const Section, Item: String; Default: Integer): Integer;
◎WriteHex(const Section, Item: String; Value: Integer);
◎ReadList(const Section, Item: String; List: TStrings);
◎WriteList(const Section, Item: String; Value: TStrings);
◎ReadFont(const Section, Item: String; Font: TFont);
◎WriteFont(const Section, Item: String; Value: TFont);
◎ReadFormPos(const Section, Item: String; Form: TForm);
◎WriteFormPos(const Section, Item: String; Value: TForm);
◎ReadFormSize(const Section, Item: String; Form: TForm);
◎WriteFormSize(const Section, Item: String; Value: TForm);
◎ReadForm(const Section, Item: String; Form: TForm);
◎WriteForm(const Section, Item: String; Form: TForm);

●TIniFile から削除されているメソッド

◎Clear
◎GetStrings(List: TStrings)
◎Rename(const FileName: String; Reload: Boolean)
◎SetStrings(List: TStrings)

●入手先

 《TExIniFile》は、以下のウェブサイトからダウンロードできます。

 ・Delphian World (http://www.delphianworld.com/)

●連絡先

 不都合などあれば、以下のウェブサイトに掲示板を設置してありますので、そこ
へ発言して下さい。

 ・Tiny Mouse's Workshop (http://hp.vector.co.jp/authors/VA029585/)

●著作権、免責について

 《TExIniFile》は、《フリーソフトウェア》です。使用、配布に関して、特に制
限はありません。著作権は、Tiny Mouse が保有します。
 《TExIniFile》の使用によって生じた損害について、Tiny Mouse は補償の義務を
負わないこととします。
 また、要望はできる限り応えるつもりですが、必ずしも対応するとは限りません。

●転載について

 《TExIniFile》の転載に関して、特に制限はありません。ただし、配布ファイル
及び格納ファイルを改変することは禁止します。また、転載の際は、その旨を
Tiny Mouse (KHC04052@nifty.ne.jp) まで連絡下さい。

●開発環境について

 《TExIniFile》は、以下の環境で開発しました。

 ・Borland Delphi 7.0 Professional
  Borland (http://www.borland.co.jp/)

 《TExIniFile》は、以下のソフトをベースにしています。

 ・TIniGT コンポーネント
  SUNさん

 配布ファイルを作成するために、以下のツールを利用しました。

 ・LHAユーティリティ32
  大竹和則 さん (http://www.kazusoft.net/)

 ・UNLHA32.DLL
  Micco さん (http://www2.nsknet.or.jp/~micco/micindex.html)

●《TExIniFile》についての雑感

 INI ファイルを操作するために、Delphi では TIniFile というオブジェクトを使
う。これはこれで充分に使い易いのだが、僕はこれまで TIniGT という VCL を使っ
てきた。TIniFile にはないメソッドも追加されていたり、非常に重宝している。
 だが、幾つか不満な点があった。ReadSections() などの TIniFile にはあるメソ
ッドが実装されていない、とか。そこで TIniGT を一部改造して使ってきた。
 しかし、これ以上改造するようなら、自分でちゃんと作り直そうと思った。まず
は、TIniGT と置換ができるようにする。ただし、今後更に改造するときに困らない
ような構造にしておく。
 こうして、TExIniFile を作りました。

●《Delphi》についての雑感

 2000 年夏、Tiny Mouse も《Delphi》を使い始めました。なんて面白いツールな
んだろう、と感動しました。Delphi は 1.0 の頃から、その名前は知っていたけれ
ど、こんなことなら、その頃から使っているんだったなあ……。
 Visual Basic 並の簡単さで、Visual C++ 並の開発力――というのは、嘘ではあ
りませんね。
 何より魅力的なのは、優秀なパーツ (コンポーネントという) が、フリーで多数、
公開されていることですね。
 サンデープログラマの皆さん、ぜひ《Delphi》を使いましょう。

| Tiny Mouse のプロフィール | Tiny Mouse's Workshop | Tiny Mouse's Home |