I store record data in files with a checksum (usually a CRC). I block read them into an array buffer and verify the checksum. If it passes, I assign via typecast the array buffer to a variable of the record type. If I'm the only one reading and writing the files that is usually enough to handle drive bit rot, or transfer errors.
If someone else's code can write the data I validate everything either when reading and assigning to the record type, or occasionally before use. Sure its slow but it's the only safe thing to do. I wouldn't think of abrogating that responsibility to the compiler. Jeff On Jul 2, 2017 4:50 PM, "Marco van de Voort" <mar...@stack.nl> wrote: > In our previous episode, Florian Kl?mpfl said: > [ Charset UTF-8 unsupported, converting... ] > > Am 02.07.2017 um 21:40 schrieb Martok: > > > Honestly, I still don't understand why we're even having this > discussion. > > > > Because it is a fundamental question: if there is any defined behavior > possible if a variable > > contains an invalid value. I consider a value outside of the declared > range as invalid, if it shall > > be valid, change the declaration of the type. > > _AND_ remove types that can't have reasonably cheap range checks like > sparse > enums ? :-) > _______________________________________________ > fpc-devel maillist - fpc-devel@lists.freepascal.org > http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel >
_______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel