zoukankan      html  css  js  c++  java
  • datasnap传输流/文件问题

    我在datasnap服务器里面定义了方法:

    procedure UpdateDoc(ItemID : integer; doc : TStream);

    客户端

    AServerMethods_PublicClient := TServerMethods_PublicClient.Create(DM_Client.SQLConnection1.DBXConnection);
      ItemText := TMemoryStream.Create;
      try
        ItemText.LoadFromFile('E:\private\ksxt\Source\Client\Win32\Debug\blank.rtf');
        ItemText.Position := 0;
        ShowMessage('ItemText.Size := ' + IntToStr(ItemText.Size));
    
        AServerMethods_PublicClient.UpdateDoc(6, ItemText);
      finally
        ItemText.Free;
        AServerMethods_PublicClient.Free;
      end;

    但是服务器接收到的doc的size始终为-1,无法得到流。

    后使用TJSONArray进行转换,可以实现。
    服务器这样写

    procedure TServerMethods_Public.UpLoadFile(ADoc: TJSONArray);
    var
      ADBXJSONTools : TDBXJSONTools;
      AData : TMemoryStream;
    begin
      AData := TMemoryStream.Create;
      try
        AData := ADBXJSONTools.JSONToStream(ADoc) as TMemoryStream;
        ShowMessage(IntToStr(AData.Size));
        AData.SaveToFile('123.rtf');
      finally
        Adata.Free;
      end;
    end;

    客户端这样写

    ItemText.LoadFromFile('E:\private\ksxt\Source\Client\Win32\Debug\blank.rtf');
        ItemText.Position := 0;
        ShowMessage('ItemText.Size := ' + IntToStr(ItemText.Size));
        ADoc := ADBXJSONTools.StreamToJSON(ItemText, 0, ItemText.Size);
        AServerMethods_PublicClient.UpLoadFile(ADoc);



  • 相关阅读:
    linux 终端光标消失问题
    linux系统中条件测试语句
    linux shell if语句
    linux shell for循环
    linux 系统中read命令
    linux中while循环语句
    linux shell脚本中流程控制语句 if 、for、while、case
    pc端WINCE的安装包
    WinCE程序的几种开发方法
    Wince 下开发技巧(一)查看内存
  • 原文地址:https://www.cnblogs.com/codingnote/p/2438673.html
Copyright © 2011-2022 走看看