iniファイルのセクション名を取得するには

解決


aura  2005-02-26 11:39:00  No: 13436

任意のセクション名でキーとともにini保存し、
FormCreate時にセクションがあればそのセクション名とキーを読み込ませたいのですが、
前者は
Ini_Path := ChangeFileExt(Application.ExeName, '.ini');
 WritePrivateProfileString(PChar(name.Text),'name',PChar(name.Text),PChar(Ini_Path)) ;
 WritePrivateProfileString(PChar(name.Text),'id',PChar

ini

[PChar(name.Text)←これを取得したい]
name=PChar(name.Text)
id=xxxxx

といった感じで実現出来ましたが後者の方法が思い付きません。
使えそうなコンポーネントを見つけましたが
導入後、実行時の引数がナンタラとかフォームの変更が反映されなくなったり
混乱状態です。
助言をお願いします。


aura  2005-02-26 11:41:12  No: 13437

Ini_Path := ChangeFileExt(Application.ExeName, '.ini');
    WritePrivateProfileString(PChar(name.Text),'name',PChar(name.Text),PChar(Ini_Path)) ;
    WritePrivateProfileString(PChar(name.Text),'id',PChar(id.Text),PChar(Ini_Path)) ;

こうでした--;


kkk  2005-02-26 12:11:00  No: 13438

DelphiでIniFileを扱うにはApiではなくTIniFileかTMemIniFileを使用するのが普通?だと思います。
その場合にセクションの一覧を得るには ReadSections(Strings: TStrings);を使用します。
Helpを参照してください。


aura  2005-02-26 12:34:35  No: 13439

お早いレスありがとうございます。

ReadSection メソッドは INI ファイルの指定されたセクションにあるキー名をすべて文字列リストに読み出します。
procedure ReadSection (const Section: string; Strings: TStrings); override;

"指定されたセクションにあるキー名を"と書かれていますが、この関数でセクション名の一覧を読み出すことが出来るのでしょうか?


kkk  2005-02-26 12:45:06  No: 13440

>procedure ReadSection (const Section: string; Strings: TStrings); override;
ではなくて
procedure ReadSections(Strings: TStrings); override;
のほうです。(sがついてます)


aura  2005-02-26 12:55:15  No: 13441

見落としてました・・。

procedure TForm1.FormCreate(Sender: TObject);
var
  AppIni: TIniFile;
begin
  AppIni:= TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini'));
  AppIni.ReadSections(ListBox1.Items);
end;

で上手くいきました。

即レスに多謝です。ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加