0

個人用に Delphi 7 をインストールしたばかりで、delphi ClientDataSet ファイルを dfXMLUTF8 に変換しようとしています。本当に必要なのは xml 構造だけです。 このサイトでは、4 行のコードを実行すると、希望する出力が生成されることが示唆されています。ただし、私のファイルは、例のように .dat ではなく .cds であることに注意してください。これが違いを生むかどうかはわかりません。

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.
4

1 に答える 1

6

コンバージョンを達成するために、必要以上のことをしているのです。MyBinaryFile.dat実際にはバイナリ形式の Delphiファイルであると仮定するとTClientDataSet、次の 2 行のコードは (追加のセットアップなしで) 機能します。

ClientDataSet1.LoadFromFile('D:\Temp\MyBinaryFile.dat');
ClientDataSet1.SaveToFile('D:\Temp\MyXMLFile.xml', dfXMLUTF8);

あなたMyBinaryFile.datが何であるかについてもっと知らず、あなたが得ているエラーについての情報がなければ、それ以上の情報を提供することはかなり困難です. animals.cdsDelphi 7の標準でテストされ、動作しています( C:\Program Files\Common Files\Borland Shared\DataWindowx XP仮想マシン上の標準のD7インストールから)。

TClientDataSet以下のコメントから、コードで作成しようとすると、未確認の識別子に関するコンパイラ エラーが実際に発生しているようです。TClientDataSet(IIRC、Professional 以上)を含む Delphi 7 に十分な SKU がある場合はDBClient、uses 句に次のように追加できます。

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コンポーネント パレットのタブにあります。

于 2012-11-20T01:14:59.953 に答える