<div dir="ltr"><div class="gmail_extra"><div class="gmail_extra">Okay, no problems Sven. Thanks again for doing what you've done. I feel like the class helpers on built ins is so great already. By the way, after adding in some I decided to write an FTP client implementation using StringHelper to great effect. Here's how it worked out (and fully tested):</div><div class="gmail_extra"><br></div><div class="gmail_extra"><a href="http://www.getlazarus.org/helpers/ftpclient/">http://www.getlazarus.org/helpers/ftpclient/</a></div><div class="gmail_extra"><br></div><div class="gmail_extra">When you remove the comments it's probably around only 500 lines and was easy to implement thanks to helper methods like Contains, Between, Split, Pop, Words.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Example from PASV command:</div><div class="gmail_extra"><br></div><div class="gmail_extra">'227 Entering Passive Mode (157,28,148,37,129,44)'</div><div class="gmail_extra"><br></div><div class="gmail_extra">Becomes (at line 430):</div><div class="gmail_extra"><br></div><div class="gmail_extra">Values := S.Between('(', ')').SplitInt(','); // Values now is array of 6 integers</div><div class="gmail_extra"><br></div><div class="gmail_extra">Example from LIST command:</div><div class="gmail_extra"><br></div><div class="gmail_extra">'lrwxrwxrwx    1 0        0               3 Jul 02  2013 public -> pub'</div><div class="gmail_extra"><br></div><div class="gmail_extra">Becomes (at line 637):</div><div class="gmail_extra"><br></div><div class="gmail_extra">Columns := S.Words(9); // Columns is now an array of 9 trimmed strings</div><div class="gmail_extra"><br></div><div class="gmail_extra">It's so easy now!</div><div class="gmail_extra"><br></div></div></div>