title: Why do Delphi and Free Pascal usually prefer a signed-integer data type to unsigned one?
body: <p>I'm not a Pascal newbie, but I still don't know until now why <a href="http://en.wikipedia.org/wiki/Embarcadero_Delphi" rel="noreferrer">Delphi</a> and <a href="http://en.wikipedia.org/wiki/Free_Pascal" rel="noreferrer">Free Pascal</a> usually declares parameters and returned values as signed integers whereas I see them should always be positive. For example:</p>
  
  <ul>
  <li><code>Pos()</code> returns type of Integer. Is it possible to be a negative?</li>
  <li><code>SetLength()</code> declares the <code>NewLength</code> parameter as a type of Integer. Is there a negative length for string?</li>
  <li><code>System.THandle</code> declared as Longint. Is there a negative number for handles?</li>
  </ul>
  
  <p>There are many decisions like those in Delphi and Free Pascal. What considerations were behind this?</p>