[fpc-pascal] Re: Fpc Access Violation if AppConfigDir doesn't exist.
Giuliano Colla
giuliano.colla at fastwebnet.it
Mon Feb 11 13:06:54 CET 2013
Il 11/02/2013 12:35, Michael Van Canneyt ha scritto:
>
>
> On Mon, 11 Feb 2013, Giuliano Colla wrote:
>
>> Il 11/02/2013 09:21, Michael Van Canneyt ha scritto:
>>>
>>>
>>> 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
>>>
>>
>> This is true only if you invoke the program from command line, which
>> is something the end user will never do.
>
> That is not the problem of TIniFile, but of the application programmer.
>
> TIniFile properly reports any error, as it should, with an exception.
> It is always up to the application programmer to deal with such cases.
>
> That this is sometimes tricky in a GUI application, cannot be helped.
>
It can be helped both by reducing the likelihood of the event, as you've
done, and by not suggesting to use in that case a try..finally construct
in a GUI application, which would mask the errors.
This suggestion comes historically from Delphi literature, but
fpc/Lazarus developers should never forget that they're smarter than
Delphi people. ;-)
Giuliano
More information about the fpc-pascal
mailing list