Iniファイルに保存する際の型変換


copen  2004-10-02 22:20:21  No: 11251  IP: 192.*.*.*

API関数のWritePrivateProfileString()を使ってiniファイルに設定を保存したいのですが、最後の引数の、iniファイルへのパスというのが、フルパスじゃないといけないみたいなので、次の様に書いたのですが、StringとPCharには互換性がありません。  というエラーが出てしまいます。

どうしたらよいのでしょうか。
var
  Ini_Path:String;
begin
Ini_Path := ChangeFileExt(Application.ExeName, '.ini');

    if Radiobutton1.Checked = true then
         WritePrivateProfileString('settei1','Upper','1',Ini_Path)
    else
         WritePrivateProfileString('settei1','Upper','0',Ini_Path);

編集 削除
ふぐちゃん  2004-10-02 23:22:45  No: 11252  IP: 192.*.*.*

PChar型にキャストします。

編集 削除
bob  2004-10-04 09:51:06  No: 11253  IP: 192.*.*.*

//PCharへの型キャスト
procedure TForm1.Button1Click(Sender: TObject);
var
    Ini_Path:String;
begin
  Ini_Path := ChangeFileExt(Application.ExeName, '.ini');

  if Radiobutton1.Checked = true then
    WritePrivateProfileString('settei1','Upper','1',PChar(Ini_Path))
  else
    WritePrivateProfileString('settei1','Upper','0',PChar(Ini_Path));
end;

//TIniFileの利用(usesにIniFilesを追加)
//※BoolToStrはTrue=-1/Falase=0なので気をつけて!!
procedure TForm1.Button2Click(Sender: TObject);
var
  Ini_Path:String;
  IniFile: TIniFile;
begin
  Ini_Path := ChangeFileExt(Application.ExeName, '.ini');
  IniFile := TIniFile.Create(Ini_Path);
  try
    IniFile.WriteString('settei1', 'Upper', BoolToStr(Radiobutton1.Checked, False));
  finally
    IniFile.Free;
  end;
end;

編集 削除
ふぐちゃん  2004-10-04 15:05:41  No: 11254  IP: 192.*.*.*

bobさん、TIniFileを使うならWriteStringメソッドとBoolToStr関数の組み合わせよりも
WriteBoolメソッドの方が簡単でわかりやすいのではないですか。(^_^;)

編集 削除
bob  2004-10-06 11:55:23  No: 11255  IP: 192.*.*.*

試してませんがWriteBoolってTrue/Falseって記録されませんでしたっけ?

編集 削除
にしの  2004-10-06 12:15:36  No: 11256  IP: 192.*.*.*

0/1で記録されます。
ちなみに、BoolToStrの第2引数をTrueにすれば、TRUE/FALSEで返りますね。

編集 削除