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;
是不可能使用了德爾福伯林的DataSnap參數,而無需使用DBXJson的?
你確定你使用*相同*的聲明爲類 - 不僅是一個類似的? –
是的,例如,TStream對象也會出現問題。 –
如果您不介意丟失類型安全性,則可以簡單地將'out'參數更改爲指針並執行轉換。轉換爲'TObject'後,做一個'is'來檢查它是否真的是你需要的類,然後你可以安全地將它轉換爲'TBtwlControlePar' – Johan