我刚刚安装了Delphi 7供个人使用,我正在尝试将delphi ClientDataSet文件转换为dfXMLUTF8。我真正需要的是xml结构。本站建议运行4行代码将生成我想要的输出。但是,请注意,我的文件是.cds,而不是示例中的.dat。我不知道这会不会有什么区别。
ClientDataSet1.Active := false;
ClientDataSet1.CreateDataSet;
ClientDataSet1.LoadFromFile('MyBinaryFile.dat');
ClientDataSet1.SaveToFile('MyXMLFile.XML', dfXMLUTF8);
我收到了错误,因为我以前从未真正使用过Delphi,我希望知道自己在做什么的人可以为我发布非常简短的xml结构。和我一起工作的这是文件(486字节)。我将奖励正确的答案的第一个海报与完整的dfXMLUTF8输出。谢谢!
更新
好的,我刚刚从零开始这个项目,我想我已经有了一些设置。我添加了uses DBClient;
、var ClientDataSet1: TClientDataSet
,最后添加了这个过程:
ClientDataSet1.LoadFromFile('C:\Documents and Settings\XPMUser\Desktop\DelphiCDS\Master.cds');
ClientDataSet1.SaveToFile('C:\Documents and Settings\XPMUser\Desktop\DelphiCDS\output.XML', dfXMLUTF8);
它引发以下错误:
模块“Project.exe”中地址004588B6的访问冲突。读取地址00000000。
Update2
我的结局是:
unit Script3;
interface
uses
Forms, DBClient;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
end;
var
Form1: TForm1;
CDS: TClientDataSet;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
CDS := TClientDataSet.Create(nil);
try
CDS.LoadFromFile('.\input.cds');
CDS.SaveToFile('.\output.xml', dfXMLUTF8);
finally
CDS.Free;
end;
end;
end.
发布于 2012-11-19 17:14:59
为了完成转换,您所做的比您必须做的要多得多。假设MyBinaryFile.dat
实际上是二进制格式的Delphi TClientDataSet
文件,那么这两行代码(没有附加设置)就可以工作了:
ClientDataSet1.LoadFromFile('D:\Temp\MyBinaryFile.dat');
ClientDataSet1.SaveToFile('D:\Temp\MyXMLFile.xml', dfXMLUTF8);
如果不更多地了解MyBinaryFile.dat
是什么,也不知道所得到的错误信息,就很难提供更多的信息。在Delphi7中测试并使用标准animals.cds
(来自Windowx虚拟机上的标准D7安装中的C:\Program Files\Common Files\Borland Shared\Data
)。
从下面的注释中可以看出,您实际遇到的问题是,当您尝试在代码中创建标识符TClientDataSet
时,编译器出现了一个有关它的错误。如果您有足够高的SKU供德尔菲7使用,其中包括TClientDataSet
(IIRC,专业及以上),您只需在uses子句中添加DBClient
:
implementation
uses
DBClient;
procedure TForm1.FormShow(Sender: TObject);
var
CDS: TClientDataSet;
begin
CDS := TClientDataSet.Create(nil);
try
CDS.LoadFromFile('MyBinaryFile.dat');
CDS.SaveToFile('MyXMLFile.xml', dfXMLUTF8);
finally
CDS.Free;
end;
end;
或者,更好的是,如果要创建VCL窗体应用程序,只需在窗体上放置一个TClientDataSet
即可;您可以在组件面板的DataAccess
选项卡上找到它。
https://stackoverflow.com/questions/13465108
复制相似问题