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);
PChar型にキャストします。
編集 削除//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;
bobさん、TIniFileを使うならWriteStringメソッドとBoolToStr関数の組み合わせよりも
WriteBoolメソッドの方が簡単でわかりやすいのではないですか。(^_^;)
試してませんがWriteBoolってTrue/Falseって記録されませんでしたっけ?
編集 削除0/1で記録されます。
ちなみに、BoolToStrの第2引数をTrueにすれば、TRUE/FALSEで返りますね。