[fpc-pascal] Re: Fpc Access Violation if AppConfigDir doesn't exist.
Michael Van Canneyt
michael at freepascal.org
Mon Feb 11 09:21:09 CET 2013
On Mon, 11 Feb 2013, Giuliano Colla wrote:
> 3) But if also the *path* to the file doesn't yet exist, it just crashes
> without rising an exception that the user application can handle somehow.
This is incorrect. It does tell you why it fails.
>
> This is rather unpleasant, because the path provided by GetAppConfigXx does
> usually exist, so you have an application which 99% of the times works just
> fine, and 1% of the times crashes without telling why.
It tells you *exactly* why it 'crashes':
home: >./ti
An unhandled exception occurred at $000000000042AE87:
EFCreateError: Unable to create file "/tmp/path/to/nothing.txt"
$000000000042AE87
home: >cat ti.pp
program ti;
uses inifiles;
begin
with TMemIniFile.create('/tmp/path/to/nothing.txt') do
try
WriteString('A','B','C');
UpdateFile;
finally
Free;
end;
end.
However, I agree that it should try to create the path as well.
I have adapted the implementation.
You'll get an error telling you if it failed to create the dir:
An unhandled exception occurred at $0000000000427F7E:
EInOutError: Could not create directory "/my/path/to/"
$0000000000427F7E
Which means that you are still (as previously) responsible for catching possible errors.
But these errors should be less frequent with this change.
Michael.
More information about the fpc-pascal
mailing list