皆さん、こんにちは!
マスター/ディテール データセットに接続された 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 を使用しています。