zoukankan      html  css  js  c++  java
  • kbmMW 5.07.00试用笔记

    kbmMW 5.06.20试用笔记 中遇到的问题,在这个版本中,基本都解决了。但还是发现修正后存在的小问题及新问题:

    1.Resolve返回值错误

    当提交的ClientQuery是执行一条sql语句,如Insert,当发生错误时,如主键重复,则Resolve无法返回正确的结果。具体情况就是在客户端显示异常信息。

        q1.Query.Text:='Insert into t1 (fid,fname)         values (''1000'',''aaaa'')';
        //q2.Query.Text:='Insert into t2 (fid,fcustomername) values (''1'',''aaaa'')';
        tx.StartTransaction;
        tx.TransactionResolver:=kbmMWClientTransactionResolver1;
        try
              ///q1.Execute(tx);
              //q2.Execute(tx);
              tx.AddDataset(q1);
              tx.AddDataset(q2);
              r:=tx.Resolve;//抛出异常,返回结果不对
    ....

    后记:5.08依旧存在这个问题

    2.SameFile

    比较文件是否相同,第一次运行正常,如果继续执行一次,则结果错误。跟踪了一下,发现还是存在5.06.20中的问题,WaitRun不等待线程执行完,直接跳到下一句代码。

    procedure Tmainform.Button5Click(Sender: TObject);
    begin
      if kbmMWFileClient1.SameFile('.\1.png','1.png') then
        ShowMessage('File is same.')//显示这句,比较结果是对的
      else
        ShowMessage('File not same.');
    
      if kbmMWFileClient1.SameFile('.\1.png','1.png') then
        ShowMessage('File is same.')
      else
        ShowMessage('File not same.');//执行这句,比较结果是错的
    
    end;

    后记:5.08.10解决!

    3.kbmMWTCPServerTransport

    kbmMW 5.07.00基于ScrossSocket,实现新的Transport,网友遇到从kbmMWTCPIPIndyServerTransport换成kbmMWTCPServerTransport后,遇到问题。我测试过程如下:

    procedure Tmainform.Button6Click(Sender: TObject);
    var
      i:integer;
    begin
      // 删除所有记录
      kbmMWClientQuery1.Close;
      kbmMWClientQuery1.Open;
      kbmMWClientQuery1.DeleteRecords;
      kbmMWClientQuery1.Resolve;
    
      for i := 1 to 10000 do
      begin
         Label3.Caption:=i.ToString;
         application.ProcessMessages;
         kbmMWClientQuery1.AppendRecord([i, i.ToString]);
      end;
    
      kbmMWClientQuery1.Resolve;
    
    end;

    服务端利用TCPServerTransport时,一次性提交1000条记录成功,变成10000条记录失败;换成TcpipIndyServerTransport,提交10000条记录成功。

    这与xalion所说相符,他说在封装CrossSocket时遇到:就是数据包不能太大

    5.08解决

    4.rest上传文件服务

    测试xalion做的rest服务器,发现无法上传文件,还是xalion威武,在TkbmMWHTTPMimeHeaderValue.GetDelimiter方法中,增加一行搞定:

    function TkbmMWHTTPMimeHeaderValue.GetDelimiter(const AName:string):char;
    begin
         if (AName=KBMMW_HTTP_REQUEST_HEADER_AcceptDatetime) or
            (AName=KBMMW_HTTP_REQUEST_HEADER_Date) or
            (AName=KBMMW_HTTP_REQUEST_HEADER_Expires) or
            (AName=KBMMW_HTTP_REQUEST_HEADER_Cookie) or
            (AName=KBMMW_HTTP_REQUEST_HEADER_IfModifiedSince) or
            (AName=KBMMW_HTTP_REQUEST_HEADER_IfUnmodifiedSince) or
            (AName=KBMMW_HTTP_REQUEST_HEADER_IfRange) or
            (AName=KBMMW_HTTP_REQUEST_HEADER_TE) or
            (AName=KBMMW_HTTP_RESPONSE_HEADER_SetCookie) or
            (AName=KBMMW_HTTP_RESPONSE_HEADER_Date) or
            (AName=KBMMW_HTTP_RESPONSE_HEADER_Expires) or
            (AName=KBMMW_HTTP_RESPONSE_HEADER_RetryAfter) or
            (AName=KBMMW_HTTP_RESPONSE_HEADER_LastModified) or
            (AName=KBMMW_HTTP_RESPONSE_HEADER_ContentType) or
            (AName=KBMMW_HTTP_RESPONSE_HEADER_ContentDisposition)//增加这行
         then
            Result:=';'
         else
             Result:=',';
    end;

    后记:5.12解决,具体在哪一个版本中未知。

    5.TkbmMWProcess.CreateProcess调用一个外部EXE出地址错 误:

    procedure Tmainform.Button1Click(Sender: TObject);
    begin
    
         //ShellExecute(0, 'open', PWideChar(String('SyncLocalDateTime.exe')),'',nil,SW_SHOWNORMAL); //uses Winapi.ShellAPI
         TkbmMWProcess.CreateProcess('.\SyncLocalDateTime.exe','');
    
    end;

    利用ShellExecute调用没有问题,换成CreateProcess则产生地址错 误,已经发给作者。

    作者回复很快,确认并在即将发布的版本中修正。另外我进一步测试,调用windows的CMD也是同样的错误。

    5.08解决

    procedure Tmainform.Button1Click(Sender: TObject);
    begin
    
    //     TkbmMWProcess.CreateProcess('.\Test.exe','');
    
         TkbmMWProcess.CreateProcess('c:\windows\system32\cmd.exe','');
    end;

     6.kbmMWTCPServerTransport

    这是作者新加的基于ScrossSocket修改的Transport,要启用他,需要在inc文件中增加

    {$DEFINE  KBMMW_NATIVETRANSPORT_SUPPORT}
    5.12依旧需要手工填加。
  • 相关阅读:
    开源方案搭建可离线的精美矢量切片地图服务-2.PostGIS+GeoServer矢量切片
    开源方案搭建可离线的精美矢量切片地图服务-1.开篇(附成果演示地址)
    c#实现超实用的<证件照换底色>小工具
    Linux ~ termios 串口编程
    JETSON TK1 ~ 基于eclipse下开发ROS
    JETSON TK1 ~ 控制GPIO
    JETSON TK1~Ubuntu14.04 Armhf源更新
    有意思的代码注释
    RaspBerry Pi3 ~ 内核编译
    C ~ 指针的运算
  • 原文地址:https://www.cnblogs.com/kinglandsoft/p/10104278.html
Copyright © 2011-2022 走看看