Flavio, thanks for that!

However, TMemIniFile.Rename cleans up its content with FStream := nil (Am I
correct?). So, In my case I would need to adapt it further so that:

procedure ArchiveIniFileTo(AMemIniFile: TMemIniFile; ADestination : string);
var
  TemporaryDestination : string;
begin
    TemporaryDestination :=  AMemIniFile.Filename;
    AMemIniFile.RenameAndNothingElse(ADestination);
    AMemIniFile.UpdateFile; // Flush data to disc
    AMemIniFile.RenameAndNothingElse(TemporaryDestination);
end;

Best,
Rafael Picanço

On Sat, Aug 2, 2025 at 7:09 AM <fpc-pascal-requ...@lists.freepascal.org>
wrote:

> Send fpc-pascal mailing list submissions to
>         fpc-pascal@lists.freepascal.org
>
> To subscribe or unsubscribe via the World Wide Web, visit
>         https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
> or, via email, send a message with subject or body 'help' to
>         fpc-pascal-requ...@lists.freepascal.org
>
> You can reach the person managing the list at
>         fpc-pascal-ow...@lists.freepascal.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of fpc-pascal digest..."
>
>
> Today's Topics:
>
>    1. Re:  TIniFile crash (Rafael Pican?o)
>    2. Re:  TIniFile crash (Fl?vio Etrusco)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Fri, 1 Aug 2025 23:53:10 -0300
> From: Rafael Pican?o <cpicanc...@gmail.com>
> To: FPC-Pascal users discussions <fpc-pascal@lists.freepascal.org>
> Subject: Re: [fpc-pascal] TIniFile crash
> Message-ID:
>         <CAGpuCi7Yh=
> ctga8fpmkx28v8qttwmiqj1jhga7h9otyrzg7...@mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> >> 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?
>
> In my case, I have a protocol where some parameters must be archived and
> IniFiles are handy when I need to do some eye inspection on them.
> Currently, I use IniFiles as in-memory to be archived and
> IniFile.ReadSectionValues('Section', TStringList(Instance)) for dynamic
> stuff.
>
> Best,
> Rafael Pican?o
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <
> http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20250801/1bd47eda/attachment-0001.htm
> >
>
> ------------------------------
>
> Message: 2
> Date: Sat, 2 Aug 2025 01:27:32 -0300
> From: Fl?vio Etrusco <flavio.etru...@gmail.com>
> To: ja...@productionautomation.net,  FPC-Pascal users discussions
>         <fpc-pascal@lists.freepascal.org>
> Cc: James Richters <james.richt...@productionautomation.net>
> Subject: Re: [fpc-pascal] TIniFile crash
> Message-ID:
>         <CAJvBmOYK=m=
> d_19pop9gpxud6wc8ja44rhhjtztuxzx_uw4...@mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Em sex., 1 de ago. de 2025, 17:54, James Richters via fpc-pascal <
> fpc-pascal@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?
>
> >
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <
> http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20250802/6c61482e/attachment-0001.htm
> >
>
> ------------------------------
>
> Subject: Digest Footer
>
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
>
>
> ------------------------------
>
> End of fpc-pascal Digest, Vol 254, Issue 3
> ******************************************
>
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to