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


オヤジプログラマー  2010-11-14 09:15:23  No: 39541

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

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


Kenny  2010-11-14 18:35:00  No: 39542

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-26 00:52:13  No: 39543

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

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

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

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加