我正在使用Devexpress的QuantumGrid 6。我需要将网格设置存储在xml配置文件中。不幸的是,网格不允许XML作为存储选项。但我可以将设置导出到流中。
我正在考虑导出到流然后将流转换为文本并将其存储为xml值。我想文本必须只包含可打印的字符,如果以某种方式压缩它会很好。
有人可以提出一种编码流的方法吗?
答案 0 :(得分:3)
使用Indy Misc调色板中的标准IdEncoderMIME / IdDecoderMime。你有一些编码流的方法。
答案 1 :(得分:3)
您可以使用SimpleStorage,这是我创建的基于XML存储的框架。你可以在这里下载。
这是为了解决像你这样的问题。要做你想做的事,你需要一行代码:
SrcStorage.Ensure('Data').Filter('gzip').AsBinary.LoadFromStream(MemoryStream);
它不仅可以自动base64对数据进行编码,而且还支持过滤,因此您可以随时进行gzip。
因此,使用三行代码可以完成所有操作:
SrcStorage := CreateStorage('BinaryStorage');
SrcStorage.Ensure('Data').Filter('gzip').AsBinary.LoadFromStream(MemoryStream);
SrcStorage.SaveToFile('Data.xml');
它使用OmniXML一个非常好的delphi XML库。您可以在下载页面上找到所有信息。
答案 2 :(得分:0)
我使用DIMimeStreams完成此操作,编码为tStringStream,然后将stream.datastring作为特定元素的文本部分。如果要添加加密,那么我将添加LockBox中找到的例程,以便在MIME步骤之前加密流。可以在songbeamer网站上找到2009年编译的最新版LockBox。您也可以使用几乎任何压缩到流的压缩例程进行压缩,然后运行mime步骤。