[fpc-pascal] TIniFile crash
Benito van der Zander
benito at benibela.de
Wed Aug 27 01:55:13 CEST 2025
Hi Fpc-Pascal Users,
>
> P.S. Although these classes are meant for compatibility with
> Delphi/Windows,
that's not even entirely compatible. Afair Windows could partially
overwrite lines in the file instead of the whole file at once
> maybe they should provide extra methods with correct exception
> handling and "atomic" saving with temporary file?
>
I suggested that almost ten years ago but they didn’t want to:
https://gitlab.com/freepascal.org/fpc/source/-/issues/30439
Here everyone keeps running into the same problems year after year and
nothing improves
> Or maybe someone can recommend alternatives?
I once overwrote UpdateFile to use temporary files:
https://github.com/benibela/videlibri/blob/master/inifilessafe.pas
Sincerely,
Benito
On 02.08.25 06:27, Flávio Etrusco via fpc-pascal wrote:
>
>
> Em sex., 1 de ago. de 2025, 17:54, James Richters via fpc-pascal
> <fpc-pascal at lists.freepascal.org> escreveu:
>
> Thank you for the great suggestions!I did not know I could have a
> memory version of the ini file.
> that sounds like a better solution than what I am doing.Right now
> I am reading in all the ini settings and putting them into
> variables like
> Ini_myvariable
>
> then I use those as needed.. then write them all out, but if I am
> understanding it correctly could I just use the memory version of
> the ini file directly?
>
> It seems like that would be much easier and also solve the issues.
>
> James
>
>
> https://github.com/fpc/FPCSource/blob/main/packages/fcl-base/src/inifiles.pp
>
> To try to resolve your issue you should use TMemIniFile and invoke
> Rename() before freeing the TMemIniFile (or invoking UpdateFile
> explicitly) to save to the temporary file.
>
> TMemIniFile is just TIniFile with some extra methods and with
> CacheUpdates defaulting to True. They parse the whole ini file in the
> constructor, so values are always read from memory.
>
> Regards,
> Flávio
>
> P.S. Although these classes are meant for compatibility with
> Delphi/Windows, maybe they should provide extra methods with correct
> exception handling and "atomic" saving with temporary file?
> Or maybe someone can recommend alternatives?
>
>
> _______________________________________________
> fpc-pascal maillist -fpc-pascal at lists.freepascal.org
> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20250827/d5f1e780/attachment.htm>
More information about the fpc-pascal
mailing list