<br><br><div class="gmail_quote">On Fri, Nov 26, 2010 at 6:57 PM, Sergei Gorelkin <span dir="ltr"><<a href="mailto:sergei_gorelkin@mail.ru">sergei_gorelkin@mail.ru</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

Max Vlasov пишет:<div class="im"><br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
</blockquote>
 > Speaking of new features, I remember the bunch of them were introduced<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
with Delphi 1.0 and many of them were inspired by other languages and dialects. I admit that frequent implementing of features like the one I suggested will make fpc more experimental and less solid. So consider it an idea just thrown in the wild to see whether it will survive or not :)<br>


<br>
</blockquote></div>
This particular idea probably won't survive. In 'unsafe' language with pointers, there's no way to enforce the restriction you suggest. It will only cause annoyance and make people implement 'workarounds'.<br>

<font color="#888888">
</font><br></blockquote></div><br>Sergei, around what code? if implemented, by default all methods read/write. If a developer restricts readonly directive to its own method, it is his own decision. For example, you're writing method Find, you understand that it hasn't change anything in the object state, you apply this directive to help yourself in the future :) if you talk about virtual readonly method someone introduced, it's similar to private section of object, you can love it or hate it, but this features exists (sure sometimes bringing real pain :) restricting usage of this method in other units.<br>

<br>Another example, you successfully wrote first version of a method with reaonly directive, you try to change something several months later and one of your changes is try to change a field inside method implementaion, the compiler points out to the restriction and stops. You have two options: beat yourself for this silly change or understand that the state changing is really needed. If the latter, ok, press ctrl-shift-up, and delete reaonly directive, no problem :)<br>

<br>Max<br><br>