BooleanをTrue/Falseという文字でIniファイルに保存
69 BooleanIniWriteRead 動作確認 Delphi2007 更新日 2008/01/31(木)

BooleanをIniファイルやレジストリに保存/読込するときに
普通にTIniFile.WriteBoolやReadBoolを使うと
	True = 1
	False= 0
になって数値として書き込まれてしまいます。

ちゃんと人間でも読めるように'True' 'False'の
文字列そのままが記入されるように
関数を作ってみました。

────────────────────

function AppIniFilePath: String;
begin
  Result := ChangeFileExt(ParamStr(0), '.ini');
end;


{-------------------------------
//  IniファイルにTrue/Falseの形式で
    Booleanを保存する為の関数
機能:       WriteBoolStr(Ini, 'Section', 'Ident', True);
            ReadBoolStr(Ini, 'Section', 'Ident', False);
            このように書くと
              [Section]
              Ident=True
            このようにIniファイルに記述される
引数説明:   TIniFileクラスと同等
備考:       uses IniFiles追加
履歴:       2003/09/06
//------------------------------}
//気に食わないのでSysUtils.BoolToStrのデフォルト引数を変更する。
function BoolToStr(Value: Boolean): String; overload;
begin
  Result := SysUtils.BoolToStr(Value, True);
end;

procedure WriteBoolStr(Ini: TCustomIniFile; Section, Ident:String;
 Value: Boolean);
begin
  Ini.WriteString(Section, Ident, BoolToStr(Value));
end;

function ReadBoolStr(Ini: TCustomIniFile; Section, Ident: String;
 Default: Boolean): Boolean;
begin
  Result := StrToBoolDef(
    Ini.ReadString(Section, Ident, ''), Default);
end;
//------------------------------

procedure TForm1.Button1Click(Sender: TObject);
var
  Ini: TIniFile;
begin
  Ini := TIniFile.Create(AppIniFilePath);
  try
    WriteBoolStr(Ini, 'Section', 'Ident', True);
  finally
    Ini.UpdateFile;
    Ini.Free;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  Ini: TIniFile;
  Value1: Boolean;
begin
  Ini := TIniFile.Create(AppIniFilePath);
  try
    Value1 := ReadBoolStr(Ini, 'Section', 'Ident', False);
  finally
    Ini.UpdateFile;
    Ini.Free;
  end;

  Memo1.Lines.Add( BoolToStr(Value1) );
end;
────────────────────

動作確認画面です