perhaps you can keep your variables in a hashtable which only requires the disk read when loading them at START, then again each time the dialog is closed if they need to be re-saved. Barring that, a better example of what you're doing could make it easier for someone to advise of optimizations, such as storing several variables in 1 string then performing fewer disk reads to load them all.

As for the 'order' of variables, if it's faster to read from [section1] that's at the front of the readme.ini than to read from [section99] toward the end, you can use notepad to cutpaste the heavily trafficked section to the front. I've never observed writeini rearranging the location of these [sections].

As for your problem with filling the editbox like that, the problem is not whether it's $custom or $built-in, the problem is whether the call contains commas. You'll find that $version and $sha1(abc) work just fine, but using instead $sha1(abc,0) fails. Probably because a simplistic parser is counting commas without consideration of whether they're inside the identifier call. The parser seems to only allow the comma when it's inside doublequotes, however nothing inside the doublequotes gets evaluated, even when you do something like " [ $sha1(abc,0) ] "