title: Webservice doesn't throw correct ERemotableException for SOAP faults, depending on order or presence of class registry
body: <p>I imported a WCF service in Delphi (XE) using the WSDL import wizard, and the service uses specific faults to communicate exceptions. Everything is working fine, except that Delphi doesn't throw the specific ERemotableException descendant for faults.</p>
  
  <p>In the import, proxies have been generated for all the faults, and every fault comes in two classes:
  One descending from <code>ERemotableException</code>, and one descending from <code>TRemotable</code>:</p>
  
  <pre><code>  UnknownEntityFault2 = class(TRemotable)
      // ...stuff...
    end;
  
    UnknownEntityFault = class(ERemotableException)
     // ...stuff...
    end;
  </code></pre>
  
  <p>and they they get registered in the initialization section:</p>
  
  <pre><code>  RemClassRegistry.RegisterXSClass(UnknownEntityFault2, 'http://schemas.datacontract.org/2004/07/Kraan.Probis.Synchronisatie.Service', 'UnknownEntityFault2', 'UnknownEntityFault');
  
    RemClassRegistry.RegisterXSClass(UnknownEntityFault, 'http://schemas.datacontract.org/2004/07/Kraan.Probis.Synchronisatie.Service', 'UnknownEntityFault');
  </code></pre>
  
  <p>Without changes, if I call the webservice, a <code>ERemotableException</code> will be caught:</p>
  
  <pre><code>  try 
      service.DoSomething();
    except
      on E: UnknownEntityFault do begin
        ShowMessage('UnknownEntityFault');
      end;
      on E: ERemotableException do begin
        ShowMessage('ERemotableException');   &lt;--- Enters this catch block
      end;
    end;
  </code></pre>
  
  <p>If I either don't register the <code>UnknownEntityFault2</code> class (the one descending from <code>TRemotable</code>). or if I register that class <strong>after</strong> I register <code>UnknownEntityFault</code>, a <code>UnknownEntityFault</code> will be thrown:</p>
  
  <pre><code>  try 
      service.DoSomething();
    except
      on E: UnknownEntityFault do begin
        ShowMessage('UnknownEntityFault'); &lt;--- Enters this catch block
      end;
      on E: ERemotableException do begin
        ShowMessage('ERemotableException');   
      end;
    end;
  </code></pre>
  
  <p>Is there way to </p>
  
  <ul>
  <li>Make sure the class descending from <code>TRemotable</code> for the fault is
  not generated?</li>
  </ul>
  
  <p>or</p>
  
  <ul>
  <li>Control the order of registering the classes?</li>
  </ul>
  
  <p>I can of course move or delete those entries my self, but it's a manual step that I would prefer to avoid, and actually that I shouldn't <strong>have</strong> to do myself in order for things to work properly.</p>