title: Are delphi variables initialized with a value by default?
body: <p>I'm new to Delphi, and I've been running some tests to see what object variables and stack variables are initialized to by default:</p>
  
  <pre><code>TInstanceVariables = class
    fBoolean: boolean; // always starts off as false
    fInteger: integer; // always starts off as zero
    fObject: TObject; // always starts off as nil
  end;
  </code></pre>
  
  <p>This is the behaviour I'm used to from other languages, but I'm wondering if it's safe to rely on it in Delphi?  For example, I'm wondering if it might depend on a compiler setting, or perhaps work differently on different machines.  Is it normal to rely on default initialized values for objects, or do you explicitly set all instance variables in the constructor?</p>
  
  <p>As for stack (procedure-level) variables, my tests are showing that unitialized booleans are true, unitialized integers are 2129993264, and uninialized objects are just invalid pointers (i.e. not nil).  I'm guessing the norm is to always set procedure-level variables before accessing them?</p>