 <p>Streaming to string is already implemented, you can use</p> <p>Writing: TClientDataSet.SaveToFile or TClientDataSet.SaveToStream</p> <p>Reading: TClientDataSet.LoadFromFile or TClientDataSet.LoadFromStream</p> <pre><code>procedure SaveToStream(Stream: TStream; Format: TDataPacketFormat = dfBinary); procedure SaveToFile(const FileName: string = ''; Format: TDataPacketFormat = fBinary); procedure LoadFromStream(Stream: TStream); procedure LoadFromFile(const FileName: string = ''); </code></pre> <p>the TDataPacketFormat options are:</p> <p><strong>dfBinary</strong>: Information is encoded in binary format.<br> <strong>dfXML</strong>:Information is encoded in XML, with extended characters encoded using an escape sequence.<br> <strong>dfXMLUTF8</strong>:Information is encoded in XML, with extended characters represented using UTF8. </p> <p>Using dfXMLUTF8 you should have no problems with non/ansi characters sets.</p>