pcharの値をiniファイルに保存・読み込みするには。


オヤジプログラマー  2010-11-14 00:15:23  No: 39541  IP: [192.*.*.*]

たとえば、drivecomboboxのdriveプロパティを保存したい場合
drivecombobox.drive := Pchar(ini.readstring('xxx', 'zzz', 'C'));
ではエラーになります。

どうすればよいのでしょうか。

編集 削除
Kenny  2010-11-14 09:35:00  No: 39542  IP: [192.*.*.*]

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
これでできます。

編集 削除
キリン  2010-11-25 15:52:13  No: 39543  IP: [192.*.*.*]

何らかのエラーで文字列がからの場合の判定が必要です。
予期せぬ場面も想定して完璧にコードを書いた方がいいです。

ドライブが使用可能か調べる関数がありますのでご自分で追加してください

一度文字列型に読み込んだ後、処理する方が安全に処理できます。
  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;

編集 削除
オヤジプログラマー  2010-12-01 22:59:05  No: 39544  IP: [192.*.*.*]

Kennyさん、ありがとうございました。できました!  これって、入門書とかには書かれていませんね。
キリンさん、実は、次のステップがそれでした。PCのハードディスクだけを処理対象にしたい、とかの要求がありますので。

皆さんどうもありがとうございました。

編集 削除