<p>実際に下記のコードを実行すると、<strong>表</strong>とか<strong>ソ</strong>の文字が化けた。</p>
<pre class="brush: delphi;">var
  sXML: string;
begin
  ...
  TXMLTransformClient.TransformationFile := "hogehoge.xtr"
  sXML := TXMLTransformClient.GetDataAsXML;
end;</pre>
<p>表なんかよく文字化けするという典型的な文字なので、即2バイトコード目が￥(0x5C)って言うやつだと思った。</p>
<p>調べてみると、midas.dllでは発生せず、MidasLibの時のみ発生する</p>
<p>これでは使い物にならないので、メーカーにmidas.dllとMidasLibの互換性の確認、不具合の原因調査、そして対応を依頼した。</p>
<div class="add">
<p>追記</p>
<p>Embarcaderoからの回答を踏まえ原因を簡単にまとめる。</p>
<p>原因となる箇所は、Xmlxform.pas の 683行目にある。<br />IAppServer が問題をもっているため、TXMLTransformClient の返す結果がおかしくなるとのこと。現在TXMLTransformClient のみがこの IAppServer インターフェイスを使用している。<br />※この問題は現最新バージョンのXE3でも確認されたとのこと。</p>
<pre class="brush: delphi;">VarPacket := FDataCache.AppServer.AS_GetRecords(GetProviderName, -1, RecsOut, Byte(Options), '', Params, OwnerData); </pre>
<p>Embarcaderoから提示された回避コード</p>
<p>バグ発生確認コード</p>
<pre class="brush: delphi;">XMLTransformClient1.ProviderName := 'DataSetProvider1'; 
XMLTransformClient1.TransformGetData.TransformationFile := 'ToXml.xtr'; 
XML := XMLTransformClient1.GetDataAsXml(''); 
Memo1.Text := XML; 
</pre>
<p>バグ回避例1(XMLストリングをファイルとして取得)</p>
<pre class="brush: delphi;" title="バグ回避例1(XMLストリングをファイルとして取得)">ClientDataSet1.SaveToFile('aaa.xml',dfXMLUTF8); 
XMLTransform1.SourceXmlFile := 'aaa.xml'; 
XMLTransform1.TransformationFile := 'ToXml.xtr'; 
Memo1.Text := XMLTransform1.Data;
</pre>
<p>バグ回避例2(XMLストリングを文字列として取得)</p>
<pre class="brush: delphi;" title="バグ回避例2(XMLストリングを文字列として取得)">var 
	stXML: TStringStream; 
begin 
	stXML := TStringStream.Create('', TEncoding.UTF8, False); 
	try 
		stXML.Position := 0; 
		ClientDataSet1.SaveToStream(stXML,dfXMLUTF8); 
		stXML.Position := 0; 
		XMLTransform1.SourceXml := stXML.ReadString(stXML.Size); 
		XMLTransform1.TransformationFile := 'ToXml.xtr'; 
		Memo1.Text := XMLTransform1.Data; 
	finally 
		stXML.Free; 
	end;
end;
</pre>
</div>