title: Faster way to move data from a dataset structure to another (in TDatasetProvider)
body: <p>I have an custom TDatasetProvider that allows to create new fields to whatever data it provides. </p>
  
  <p>So, let's say you got the folowing fields on the original dataset:</p>
  
  <ul>
  <li>CustomerId</li>
  <li>Name</li>
  <li>Age</li>
  </ul>
  
  <p>And you need to select it on DBGrid using showing an Bitmap. Well, you can since my DSP can add 
  an boolean field called <code>Selected</code> to the dataset data.</p>
  
  <p>The way I do that now:</p>
  
  <ol>
  <li>Create 2 TClientDataset objects (Origin and Target) </li>
  <li>In Origin, I load the data got from the parameters of the InternalGetRecords method (I overrode it)</li>
  <li>In Target, I create the fielddefs defined from the Origin dataset and add the fielddefs created in design-time by the developer</li>
  <li>Execute an CreateDataset on Target</li>
  <li>And, row-by-row (and field-by-field), I copy the data from the Origin database to the Target dataset </li>
  <li>In the end, return the Data variant as a return value from InternalGetRecords.</li>
  </ol>
  
  <p>I really don't know if there's a more elegant (and faster) way to do that. There's another (faster and/or elegant) way to get that result?</p>