IniFileについて

解決


kez  2004-05-29 18:32:36  No: 9262  IP: [192.*.*.*]

アプリケーションを開発していて、現在、INIファイルにセーブするところを作成しているのですが、INIファイルから値の読み込み時は、大丈夫なのですが、INIファイルへの書き込み時に EAccessViolationエラーが発生します。ですが、INIファイルへは書き込みができているのですが、このエラーを発生させない方法はないでしょうか?また、なぜこのエラーが発生するのか教えてくだされば幸いです。よろしくお願いします。

編集 削除
ふぐちゃん  2004-05-29 18:45:37  No: 9263  IP: [192.*.*.*]

ソースコードの提示が必要ではないかと思います。

編集 削除
kez  2004-05-29 19:48:19  No: 9264  IP: [192.*.*.*]

わかりました。
以下のユニットを呼び出してINIファイルにセーブ、ロードを行います。
よろしくお願いします。
---------↓ソース------------------
unit ini;

interface
uses
  IniFiles ,SysUtils,Forms,Dialogs;
  function Get_IniFile(Section,Value,Default:String):String;
  procedure Set_IniFile(Section,Value,Value2:String);

implementation

function Get_IniFile(Section,Value,Default:String):String;
var
  IniFile:TIniFile;
  GFilePath:String;
begin
  GFilePath:=ExtractFilePath(Application.ExeName) + 'Sys\BookSys.ini';
  IniFile := TIniFile.Create(GFilePath);
  try
    result := IniFile.ReadString(Section,Value,Default);
  finally
    IniFile.Free;
  end;
end;

procedure Set_IniFile(Section,Value,Value2:String);
var
  IniFile :TIniFile;
  SFilePath:String;
begin
  SFilePath:=ExtractFilePath(application.ExeName) + 'Sys\BookSys.ini';
  IniFile := TIniFile.Create(SFilePath);
  try
    IniFile.WriteString(Section,Value,Value2);
  finally
    IniFile.Free;
  end;
end;

end.

編集 削除
ふぐちゃん  2004-05-29 20:25:32  No: 9265  IP: [192.*.*.*]

提示してくださったコードをアプリに組み込んでそのまま実行してみましたが、
正常に動作しました。
EAccessViolationが書き込み時に発生するとのことですが、これは無効な
メモリ領域へアクセスしたときに発生しますよね。
Set_IniFile手続きを呼び出しているコードに問題は無いでしょうか?

編集 削除
kez  2004-05-29 21:07:07  No: 9266  IP: [192.*.*.*]

フォームのクローズのところに問題があったようです。
いろいろありがとうございました。

編集 削除