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

解決


aura  2005-02-26 11:39:00  No: 13436  IP: [192.*.*.*]

任意のセクション名でキーとともに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  IP: [192.*.*.*]

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  IP: [192.*.*.*]

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

編集    削除
aura  2005-02-26 12:34:35  No: 13439  IP: [192.*.*.*]

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

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

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

編集    削除
kkk  2005-02-26 12:45:06  No: 13440  IP: [192.*.*.*]

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

編集    削除
aura  2005-02-26 12:55:15  No: 13441  IP: [192.*.*.*]

見落としてました・・。

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

で上手くいきました。

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

編集    削除