2016-05-20 15 views
0

DatasnapサーバーをXE 10.1 Berlinに移行しましたが、OUTパラメータを使用してservermethodを呼び出すと、サーバーでエラーが発生しました。このメソッドが発射された場合datasnap servermethodでOUTパラメータを使用したときのエラー

オブジェクト

TBtwlControlePar=class 
    xInDoc, 
    xHandmatig, 
    xStatus, 
    xVerwacht, 
    xAantal, 
    xVerwerkt, 
    xOnVerwerkt, 
    xOnverwerktInDocument, 
    xTotaalCustoms :Integer; 
    end; 

function TPWAdminMethods.DOC_BTWAH_Get2(pPeriode, pMaand, pSort,pSelop,pSelOntvangen,pSelToegewezen,pSelVerwerkt: integer; pSel: string; out pControlePar: TBTWLControlePar): TResult; 

ServerMethod

tmpM := TPWAdminMethodsClient.Create (DMForm.DSConnection.DBXConnection, false); 

クライアント

FreeAndNil(fControlePar); 
    tmpResult := tmpM.DOC_VATLH_Get2(Jaar,sort,SelOp,SelOntvangen,SelToegewezen,SelVerwerkt,fSelection,fControlePar);   

サーバは、この最後の行

procedure TDSMethod.Invoke(MethodInstance: TObject; 
    MethodValues: TDSMethodValues); 
var 
    RContext: TRttiContext; 
    RType: TRttiType; 
    Params: TArrayOfTValue; 
begin 
    Params := MethodValues.GetValues; 
    RType := RContext.GetType(MethodInstance.ClassType); 
    MethodValues.ReturnValue := RType.GetMethod(FMethodInfoHeader.NameFld.ToString).Invoke(MethodInstance, Params); 
end; 
にエラーが発生します

VAN and OUT argument must match parameter type exactly

それはDBXJsonを使用せずにデルファイBerling Datasnapでのパラメータを使用することは不可能ですか?

+0

クラスに*同じ*宣言を使用することをお勧めしますか? –

+0

はい、TStreamオブジェクトなどでも問題が発生します。 –

+0

型の安全性を失っても構わない場合は、単純に 'out'パラメータをポインタに変更して変換を行うことができます。 'TObject'に変換した後、それが実際に必要なクラスであることを確認する' is'を行い、 'TBtwlControlePar'に安全にハードキャストすることができます – Johan

答えて

1

このエラーメッセージと問題は、エンバカデロの品質ポータルでRSP-14895として記録されています。これは他の誰かによって16May16で行われました。その人は「XE10はOKです」と述べました。 今日(14月16日)もう1つのテストプロジェクトを追加しました。私のテストプロジェクトは、VARパラメータの場合です。私は実際にテストプロジェクトのスクリーンショットを提供しました。私のテストはXE6で動作しますが、10.1ベルリンでは失敗します。 この問題が修正されるまで、私はDataSnapを使用できません。 問題を投票してください。

関連する問題