title: What is System.String exactly in Delphi?
body: <p>I maintain some pretty old Delphi code that in a specific unit uses <code>EmptyString</code>.</p>
  
  <p>The compiler resolves it as </p>
  
  <blockquote>
    <p>costant EmptyString = '' - from System.string</p>
  </blockquote>
  
  <p>now i have no System.string.pas file in my hard disk, or .dcu so i am not able to know more about this.</p>
  
  <p>I found in </p>
  
  <pre><code>C:\Program Files (x86)\Embarcadero\Studio\17.0\source\rtl\sys\system.SysUtils.pas
  </code></pre>
  
  <p>another similar constant:</p>
  
  <pre><code>{ Empty string and null string pointer. These constants are provided for
    backwards compatibility only.  }
  
    EmptyStr: string = '';
  {$IFNDEF NEXTGEN}
    NullStr: PString = @EmptyStr;
  </code></pre>
  
  <p>At first sight it seems that <code>EmptyStr</code> and <code>EmptyString</code> were used in past only so they are <em>somehow deprecate</em> so better to use <code>''</code> directly or define constants in the application that redefine them.</p>
  
  <p>Now after upgrading a 3rd party component i realized that <code>EmptyString</code> is not resolved anymore.</p>
  
  <p>My question is:
  what is <code>System.String</code> exactly? Why there is no a corresponding .pas file in rtl?</p>
  
  <p>I googled without success.</p>
  
  <p>Thanks.</p>