1

皆さん、こんにちは!

マスター/ディテール データセットに接続された TClientDataSet を使用しています。最初に、データを保存します (さらにデータを交換するため)。

cdsImpExp.SaveToFile(aFileName, dfXML);

取得したファイルでは、メモフィールドは内部エンコーディングで書き込まれます (エンコーディングは何ですか?): T_PATIENTS_MEMO="!?@02:0 4;O MB>9 " - マスター データセット用

T_OBSERVATION_MEMO="!?@02:0 4;O MB>9 " - 詳細データセット用

今やります

cdsImpExp.LoadFromFile(aFileName);

すべてのフィールドを処理しようとします。メモ フィールドのコンテンツで非常に奇妙な動作が発生します。最初に、これらのフィールドを次のように読み取ろうとしました。

FieldValue := Field.AsString;

マスター データセットのメモ フィールドには、目的のエンコーディング (win-1251) で正しい文字列が含まれています。詳細には、データセットのメモ フィールドには、入力ファイルと同じ文字シーケンスが含まれています (!?@02:0 4;O MB>9)。Ok。私はこれを試します:

  if Field.DataType = ftMemo then
  begin
    ms := TMemoryStream.Create;
    TMemoField(Field).SaveToStream(ms);
     ms.Position := 0;
     SetString(FieldValue, PChar(ms.Memory), ms.Size);

また、FieldValue には「Справка㐠㬄伄 этой㼠䀄㸄」のようなものが含まれます (一部の文字は正しく、一部の文字は日本語エンコーディングです)。

私は何を間違っていますか?詳細データセットの xml ファイルからメモ フィールドの値を読み取るにはどうすればよいですか? ご協力いただきありがとうございます。

Delphi XE Update 1 を使用しています。

4

0 に答える 0