<div dir="auto">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.<div dir="auto"><br></div><div dir="auto">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.</div><div dir="auto"><br></div><div dir="auto">Jeff </div></div><div class="gmail_extra"><br><div class="gmail_quote">On Jul 2, 2017 4:50 PM, "Marco van de Voort" <<a href="mailto:marcov@stack.nl">marcov@stack.nl</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">In our previous episode, Florian Kl?mpfl said:<br>
[ Charset UTF-8 unsupported, converting... ]<br>
> Am 02.07.2017 um 21:40 schrieb Martok:<br>
> > Honestly, I still don't understand why we're even having this discussion.<br>
><br>
> Because it is a fundamental question: if there is any defined behavior possible if a variable<br>
> contains an invalid value. I consider a value outside of the declared range as invalid, if it shall<br>
> be valid, change the declaration of the type.<br>
<br>
_AND_ remove types that can't have reasonably cheap range checks like sparse<br>
enums ? :-)<br>
______________________________<wbr>_________________<br>
fpc-devel maillist  -  <a href="mailto:fpc-devel@lists.freepascal.org">fpc-devel@lists.freepascal.org</a><br>
<a href="http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel" rel="noreferrer" target="_blank">http://lists.freepascal.org/<wbr>cgi-bin/mailman/listinfo/fpc-<wbr>devel</a><br>
</blockquote></div></div>