[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