アプリケーションを開発していて、現在、INIファイルにセーブするところを作成しているのですが、INIファイルから値の読み込み時は、大丈夫なのですが、INIファイルへの書き込み時に EAccessViolationエラーが発生します。ですが、INIファイルへは書き込みができているのですが、このエラーを発生させない方法はないでしょうか?また、なぜこのエラーが発生するのか教えてくだされば幸いです。よろしくお願いします。
ソースコードの提示が必要ではないかと思います。
わかりました。
以下のユニットを呼び出して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.
提示してくださったコードをアプリに組み込んでそのまま実行してみましたが、
正常に動作しました。
EAccessViolationが書き込み時に発生するとのことですが、これは無効な
メモリ領域へアクセスしたときに発生しますよね。
Set_IniFile手続きを呼び出しているコードに問題は無いでしょうか?
フォームのクローズのところに問題があったようです。
いろいろありがとうございました。
ツイート | ![]() |