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 := to 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.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.08依旧需要手工填加。

kbmMW 5.07.00试用笔记的更多相关文章

  1. kbmMW 5.06.20试用笔记

    1.kbmMWConfiguration自动备份配置文件的问题还没有修正. 下面是以前写过的内容,再一次在新闻组中提出这个问题: kbmMW提供一个强大的配置信息管理对象,前期译过这个对象的介绍,在使 ...

  2. kbmmw 5.07 正式发布

    来了来了 5.07.00 Dec 9 2018           Important notes (changes that may break existing code)         === ...

  3. KbmMW 4.40.00 测试发布

    经过漫长的等待,支持移动开发的kbmmw 4.40.00 终于发布了,这次不但支持各个平台的开发, 而且增加了认证管理器等很多新特性,非常值得升级.具体见下表. 4.40.00 BETA 1 Oct ...

  4. CentOS 7 mini 试用笔记

    CentOS 7 mini 试用笔记 安装过程中,网卡是默认关闭的,要手动打开. 安装好以后,查看IP地址:# ip addr----------------------1: lo: 本地回环2: e ...

  5. KBMMW 4.92.00 发布

    We are happy to announce the release of kbmMW Professional and Enterprise Edition. Yet again kbmMW c ...

  6. KBMMW 4.90.00 发布

    kbmMW is a portable, highly scalable, high end application server andenterprise architecture integra ...

  7. kbmmw 5.06.00 beta 发布

    原生.高效.可扩展.跨平台通信库来了. we are happy to announce v5.06.00 BETA of our popular middleware for Delphi and  ...

  8. kbmmw 5.05.00 发布

    新年前最后几天,kbmmw 发布了新版本,增加一大波功能.we are happy to announce v5.05.50 of our popular middleware for Delphi ...

  9. KBMMW 4.84.00 发布

    kbmMW is a portable, highly scalable, high end application server and enterprise architecture integr ...

随机推荐

  1. Elsevier系旗下期刊论文投稿流程

    目录 1.上传文件需求 2.注册账号和填写相关信息 3.以作者身份登入 4.开始提交论文:点击submit New Manuscript 5.选择论文类型:一般是科技长文Full Length Art ...

  2. 160. Intersection of Two Linked Lists(剑指Offer-两个链表的第一个公共结点)

    题目: Write a program to find the node at which the intersection of two singly linked lists begins. Fo ...

  3. python记录_day14 内置函数二 迭代 二分法

    一.匿名函数 形式: lambda 形参:返回值 lambda表示的是匿名函数. 不需要用def来声明, 一句话就可以声明出一个函数.匿名函数不是说一定没名字,而是他们的名字统一称为“lambda”, ...

  4. LCS(最长公共子序列)问题

    例题见挑战程序设计竞赛P56 解释:子序列是从原序列中按顺序(可以跳着)抽取出来的,序列是不连续的,这是其和子串最大的区别: 我们可以定义dp数组为dp[i][j],表示的是s1-si和t1-ti对应 ...

  5. python装饰器概念与应用

    格式一:装饰器外层不传参,内层传参 user_status = False # 用户登录了就把这个改成True def login(func): # 把要执行的henan模块从这里传进来 def in ...

  6. hash、hashchange事件

    1.hash即URL中"#"字符后面的部分. ①使用浏览器访问网页时,如果网页URL中带有hash,页面就会定位到id(或name)与hash值一样的元素的位置: ②hash还有另 ...

  7. ASP.NET controller TO view 数据传递

    https://stackify.com/viewbag/ In the case of ASP.NET MVC, you have three ways to pass data from the ...

  8. Hadoop---18/06/03 20:15:52 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable starting yarn daemons

    WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin- ...

  9. pyqt实现滑动开关

    https://www.cnblogs.com/feiyangqingyun/p/6035633.html 根据Qt的实现,在PyQt上面实现了滑动开关的控件 import sys from PyQt ...

  10. vuex的学习例子

    最近在学习vuejs,一直有听说vuex,用来实现多组件共享的一种状态管理模式,但是网上都说,不要为了用vuex而用vuex,大概意思就是尽量少用vuex,一些小项目可以用bus来实现组件之间的传值问 ...