たとえば、drivecomboboxのdriveプロパティを保存したい場合
drivecombobox.drive := Pchar(ini.readstring('xxx', 'zzz', 'C'));
ではエラーになります。
どうすればよいのでしょうか。
DriveComboBoxのDriveプロパティの型はChar型で、pCharではないですね。
簡単に言うとChar型は1文字だけの文字型、pChar型は、文字の指し示す
ポインタです。
お望みのことは、手抜きですが、保存の場合
I:=TInifile.Create('C:\Temp\I.ini');
try
I.Writestring('xxx', 'yyy', DriveComboBox1.Drive);
finally
I.Free
end
読み込みの場合
I:=TInifile.Create('C:\Temp\I.ini');
try
DriveComboBox1.Drive:=I.Readstring('xxx', 'yyy', 'C')[1];
finally
I.Free
end
これでできます。
何らかのエラーで文字列がからの場合の判定が必要です。
予期せぬ場面も想定して完璧にコードを書いた方がいいです。
ドライブが使用可能か調べる関数がありますのでご自分で追加してください
一度文字列型に読み込んだ後、処理する方が安全に処理できます。
var s : string;
Drive : Char;
begin
s := UpperCase(ini.readstring('xxx', 'zzz', 'C'));
if (Length(s)>0) and (s[1] in ['A'..'Z']) then
Drive := s[1];
else
Drive := 'C';
// ドライブが現在利用可能かどうか調べてるとさらにいいと思います
drivecombobox.drive := Drive;
end;
Kennyさん、ありがとうございました。できました! これって、入門書とかには書かれていませんね。
キリンさん、実は、次のステップがそれでした。PCのハードディスクだけを処理対象にしたい、とかの要求がありますので。
皆さんどうもありがとうございました。
ツイート | ![]() |