Rob...I debated on which way to go...Using the Left(string, -1) route, vs the Trim() route, and would recommend sticking with just the Left() method. In my mind, this altered the return values the least, and would avoid any potential issues if there were ever intentional spaces at the beginning or ending of values. That's just my 2 cents, even though Trim() may seem simpler.

Ruud, thanks for the feedback. In my opinion it seems odd to get the extra carriage return, but I can also understand why it was programmed that way. At this point it might be best to leave it as is, as it may break a lot of existing code that currently works around it. Some improved documentation on that function may be the better solution, but I'll let others chime in. I am curious however as to how all the section key names found their way into that last empty array item in my example above. I would have expected it to be blank.

 Quote:
Install the Ricoh
Install the Sharp
Install the Brother
Install the Xerox
Install the printer1
printer2
printer3
printer4