<div dir="ltr"><div class="gmail_extra">Michael, a question: </div><div class="gmail_extra"><br></div><div class="gmail_extra">How much of the interface section of units differ per platform? Is it 1% of the code? Is it 5% of the code? With the xml2 unit it's 0%, yet all of the declarations are nested in several layers of include files:</div><div class="gmail_extra"><br></div><div class="gmail_extra"><a href="http://cache.getlazarus.org/images/xml2-unit.gif" target="_blank">http://cache.getlazarus.org/images/xml2-unit.gif</a></div><div class="gmail_extra"><a href="http://cache.getlazarus.org/images/xml2-include.gif" target="_blank">http://cache.getlazarus.org/images/xml2-include.gif</a><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">At what point does putting every interface declaration a {$i includemeh.inc} stop making sense?</div><div class="gmail_extra"><br></div><div class="gmail_extra">Okay, so why do I care? Because I want to be able to read what "stuff" is in a unit by the normal means, and that is to scroll through the declarations of a unit and not be forced to open 40 or more {$i includemeh.inc} files. I want to be able to Ctrl+F in a file and find stuff. I appreciate being able to just read interface declarations to learn/understand what exactly a unit is declaring. Multiple nested includes and no real unit interface declarations is to antithetical most all users ability to learn or understand what is available.<br><br></div><div class="gmail_extra">With regards to regions and the RTL, if you for some reason are not using Lazarus they don't hurt anything. Instead they would act like a comment saying "Hey, these declarations are implemented in sysint.inc", which has the same impact as saying {$i sysinth.inc}. The difference is you can actually read the declarations.</div><div class="gmail_extra"><br></div><div class="gmail_extra">And then there is the LCL, which seems to have borrowed the idea of {$i includemeh.inc}. The first declarations of the Controls unit does a {$I controlconsts.inc} and simply lists constant component message identifiers. Why does this need to be an include file? Put it in the Controls unit interface section, and if you want throw a region around it as a comment. You get the added bonus to be able to fold if you're using Lazarus, but if not, hey you get a nice comment.</div><div class="gmail_extra"><br></div><div class="gmail_extra">I have a feeling that if I ran some analytics on the interface section of the RTL I would find > 99.5% of the interface section declarations remain the same across all platforms. I also have the feeling that if an accurate 99.5% analysis was presented here some of you would remain adamant that unit interface declarations should NOT contain actual interface declarations, rather multiple nested include files should contain them.</div></div>