kbmmw 5.09 发布
New stuff
=========
- Added kbmMWSmartBind.pas unit with optional kbmMWSmartBindVCL.pas and kbmMWSmartBindFMX.pas
Provides new easy to use multiway databinding between data, controls and objects.
- Added support for XML-RPC and JSON-RPC. Include kbmMWJSONRPCTransStream and/or kbmMWXMLRPCTransStream units
and select JSONRPC or XMLRPC as transport stream format in request/response transports.
- Updated TkbmMWONArray, added:
procedure MoveAppend(const AValue:TkbmMWONArray);
procedure MoveInsert(const AIndex:TkbmNativeInt; const AValue:TkbmMWONArray);
procedure CopyAppend(const AValue:TkbmMWONArray);
procedure CopyInsert(const AIndex:TkbmNativeInt; const AValue:TkbmMWONArray);
procedure Insert(const AIndex:TkbmNativeInt; const AValues:array of variant); overload;
- Updated TkbmMWONObject, added:
property PropertyValueAsVariant[const AIndex:TkbmNativeInt]:variant read GetPropertyValueAsVariant write SetPropertyValueAsVariant;
- Added function IkbmMWScheduledEvent.SyncQueued:IkbmMWScheduledEvent which works similar to Synchronized
except it will queue the operation and not block to prevent certain deadlock scenarios.
- Added IkbmMWScheduledEvent.AfterEnd and IkbmMWScheduledEvent.SynchronizedAfterEnd optional handlers
which will be called when the event has run and it is never to be run again (it is truely ending).
- Added IkbmMWScheduledEvent.Executed:boolean property that returns true if the event has been executed
at least once.
- Added properties OnAnonymousAfterEndProcedure:TkbmMWOnAnonymousScheduledProcedure and OnSimpleAnonymousAfterEndProcedure:TkbmMWOnSimpleAnonymousScheduledProcedure
to IkbmMWScheduledEvent. See AfterEnd explanation.
- Added property IkbmMWScheduledEvent.IsSynchronized which indicates if an event is running synchronized (or syncqueued).
- Added new methods to TkbmMWRTTI:
class function IskbmMWONCustomObject(const AVariant:variant):boolean;
class function GetkbmMWONCustomObject(const AVariant:variant; var ACustomObject:TkbmMWONCustomObject):boolean;
class function CompareValue(const AValue1,AValue2:TValue):integer;
class function GetIsInteger(const AValue:TValue):boolean;
class function GetIsInt64(const AValue:TValue):boolean;
class function GetIsBoolean(const AValue:TValue):boolean;
class function IsDesigntime:boolean;
- Added TkbmMWThreadList<T>.Count property in kbmMWGlobal.pas
- Added TkbmMWThreadDictionary<TKey,TValue> and TkbmMWThreadObjectDictionary<TKey,TValue> class
in kbmMWGlobal.pas
- Added function kbmMWSafeDelphiIdentifier(AIdentifier:string):string; to kbmMWGlobal.pas
- Added new functions to TkbmMWJSONMarshal:
class function GenerateDelphiClassFromUTF8File(const AFileName:string; const AUnitName:string; const AMainClassName:string):string;
class function GenerateDelphiClassFromUTF16File(const AFileName:string; const AUnitName:string; const AMainClassName:string):string;
class function GenerateDelphiClassFromUTF8Stream(const AStream:TStream; const AUnitName:string; const AMainClassName:string):string;
class function GenerateDelphiClassFromUTF16Stream(const AStream:TStream; const AUnitName:string; const AMainClassName:string):string;
They generate Delphi source code that is able to marshal/demarshal provided JSON data.
- Added new functions to Use (kbmMWSmartUtils.pas):
class function IsObject(const AVariant:Variant):boolean
class function IsObject<T>(const AVariant:Variant):boolean
class function IsDateTime(const AVariant:Variant)
class function IsString(const AVariant:Variant):boolean
class function IsDouble(const AVariant:Variant):boolean
class function IsInteger(const AVariant:Variant):boolean
class function IsInt64(const AVariant:Variant):boolean
- Added new functions to TkbmMWYAMLMarshal:
class function GenerateDelphiClassFromUTF8File(const AFileName:string; const AUnitName:string; const AMainClassName:string):string;
class function GenerateDelphiClassFromUTF16File(const AFileName:string; const AUnitName:string; const AMainClassName:string):string;
class function GenerateDelphiClassFromUTF8Stream(const AStream:TStream; const AUnitName:string; const AMainClassName:string):string;
class function GenerateDelphiClassFromUTF16Stream(const AStream:TStream; const AUnitName:string; const AMainClassName:string):string;
They generate Delphi source code that is able to marshal/demarshal provided YAML data.
- Added TkbmMWLockFreeCountLock to kbmMWLockFree.pas
Provides a simple way to count interests in a resource.
- Added class function TkbmMWONCustomMarshal.GenerateDelphiClass(const AUnitName:string; const AMainClassName:string; const AON:TkbmMWONCustomObject):string;
- Added support for ORM to detect primary key field changes and automaticaly update datastorage accordingly.
- Added support for marshalling/demarshalling data of type variant.
- Added new function to kbmMWHTTPUtils.pas
function kbmMWIsMimetypeTextual(const AMimeType:string):boolean;
- Added support for rewriting ALTER TABLE PRIMARY KEY SQL
- Added new functions to TkbmMWXMLMarshal:
class function FromFile<T>(const AFileName:string):T; overload;
class function FromFile(const AFileName:string; AResultClass:TClass):TObject; overload;
Provides easy access to marshalling and demarshalling in one line.
class procedure SaveToFile(const AFileName:string; const AValue:TValue); overload;
class function GenerateDelphiClassFromFile(const AFileName:string; const AUnitName:string; const AMainClassName:string):string;
class function GenerateDelphiClassFromStream(const AStream:TStream; const AUnitName:string; const AMainClassName:string):string;
They generate Delphi source code that is able to marshal/demarshal provided YAML data.
Changes/minor additions
=======================
- Improved TkbmMWONNative.SetAsFmtString to correctly use AFormat.FormatSettings when handling decimal comma.
- Improved TkbmMWONArray.GetAsVariant and TkbmMWONObject.GetAsVariant to allow for returning embededded kbmMW supported object/record
as variant when needed for kbmMW SKUs supporting SmartService.
- Improved TkbmMWONArray.GetAsValue and TkbmMWONObject.GetAsVariant to allow for returning embededded kbmMW supported object/record
as TValue when needed for kbmMW SKUs supporting SmartService.
- Improved TkbmMWONArray.SetAsVariant and TkbmMWONObject.SetAsVariant to handle variant embededded kbmMW supported object/record
when needed for kbmMW SKUs supporting SmartService.
- Improved TkbmMWONArray.SetAsValue and TkbmMWONObject.SetAsValue to handle TValue embededded kbmMW supported object/record
when needed for kbmMW SKUs supporting SmartService.
- Improved TkbmMWONArray.Add(const AValues:array of variant) to handle variant embededded kbmMW supported object/record
when needed for kbmMW SKUs supporting SmartService.
- Updated class function TkbmMWProcess.ExecuteProcess to support optional TEncoding argument.
- Improved TkbmMWJSONStreamer to differenciate between number and integer, although JSON standard only knows about number.
It is of interest when converting object notation to other formats.
- Added optional argument const ABestMatch:boolean = false to TkbmMWRTTIKnownTypes.Get and GetClass functions.
If true and no known exact type is found, it will attempt to find usable parent type.
- Added optional const AWait:boolean = true argument to several TkbmMWScheduler.Unschedule and Clear methods.
- Updated kbmSQLite.pas adapter to respect default Journal mode and default page size.
- Improved updating SQLite journal mode and page size.
- Improved TkbmMWLinqStage.AsStrings to attempt better formatting of data.
- Improved REST transport stream format.
- Improved kbmMWCustomServerMessagingTransport.pas to allow encrypted subscription and unsubscription
message to be proxied without knowing key.
- Improved TkbmMWNullableReplacementVisualizer.
- Updated TkbmMWRESTAttribute, added Required property default false.
Indicates if an argument is required or not.
- Improved TkbmMWRTTI.GetQualifiedName to attempt to generate qualified names for non registered types too.
Fixes
=====
- Fixed TkbmMWProcess.ExecuteProcess to terminate job on function end, if AJob handled given in arguments.
- Fixed various bugs and some leaks in kbmMW Scheduler.
- Fixed bugs in TkbmMWRTTI methods.
- Fixed TkbmMWRemoteDesktopClient.Connect to unsubscribe from previous subscription if any.
- Fixed bugs in TkbmMWOracleMetaData.
- Fixed bugs in kbmMWGlobal.pas.
- Fixed bugs and leaks in kbmMWORM.pas.
- Fixed typo bug in TkbmMWORM.GenerateDelphiClass.
- Fixed access violation when reregistering kbmMW in Delphi due to internal Delphi RTTI bug.
- Fixed AutoCommit issue in UniDAC database adapter.
- Fixed bugs in kbmMWCustomServerMessagingTransport.pas.
kbmmw 5.09 发布的更多相关文章
- 开启kbmmw 5.09 中的XML-RPC和 JSON-RPC 服务
kbmmw 5.09 里面增加了XML-RPC和 JSON-RPC 服务支持,但是默认没有开启. 需要在安装前,修改kbmMWConfig.inc文件. 加入以下定义 {$DEFINE KBMMW_J ...
- koahub.js 0.09 发布,新增钩子机制
koahubjs发布0.09 新增钩子机制添加钩子机制,控制器钩子和函数钩子修复自动加载bug,实现除自动加载导出的default外,还能自动加载其他的方法记koahubjs钩子开发过程在使用koah ...
- kbmMW 5.09测试报告(1)-Scheduler
这个版本除了增加新的SmartBinding功能,同时提供了大量的功能更新以及bug修正.其中,SmartBinding的介绍,xalion已经第一时间写了初识kbmmw 中的smartbind功能, ...
- kbmmw 5.04 发布
增加了一大波功能,消灭了一大堆问题,也肯定引进了一大票BUG.We are happy to announce the release of our latest version of kbmMW. ...
- kbmmw 5.02发布
5.02.00 May 27 2017 Important notes (changes that may break existing code) ========================= ...
- kbmmw 5.01 发布
Important notes (changes that may break existing code) ============================================= ...
- KbmMW 4.5 发布
We are happy to announce the release of kbmMW v. 4.50.00 Professional, Enterprise and CodeGear Editi ...
- kbmMW 5.09.00是个必须升级的版本!
这几天遇到的几个问题,从5.08.10升级到5.09.00,自然解决了! 所以建议大家都升级到这个版本. 例如我遇到的问题: 1.在线程中使用ClientQuery注意的问题 2.Invalid pr ...
- 使用kbmmw 实现图形验证码
首先感谢图形验证码的提供者 晴空无彩虹 https://blog.csdn.net/u011784006/article/details/80827181 他用FMX 实现了验证码的生成,我修改成 ...
随机推荐
- Activation(hdu 4089)
题目:仙5的激活序列.有以下4种情况: 1.注册失败,但是不影响队列顺序 ,概率为p1 2.连接失败,队首的人排到队尾,概率为p2 3.注册成功,队首离开队列,概率为p3 4.服务器崩溃,激活停止,概 ...
- Codevs 3578 无线网络发射器选址== NOIP 2014 Day2 T1
3578 无线网络发射器选址 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 白银 Silver 题目描述 Description 随着智能手机的日益普及,人们对无线网的需求日益增大. ...
- vue.js源码学习分享(六)
/* */ /* globals MutationObserver *///全局变化观察者 // can we use __proto__?//我们能用__proto__吗? var hasProto ...
- ASP.NET路由应用及IIS配置(非MVC)
一.前后台代码: Global.cs: using System.Web.Routing; ... void Application_Start(object sender, EventArgs e) ...
- php--strlen()与mb_strlen的作用与区别
在PHP中,strlen与mb_strlen是求字符串长度的函数PHP内置的字符串长度函数strlen无法正确处理中文字符串,它得到的只是字符串所占的字节数.对于GB2312的中文编码,strlen得 ...
- LeetCode OJ--Median of Two Sorted Arrays ***
http://oj.leetcode.com/problems/median-of-two-sorted-arrays/ 找两个有序数组的中位数,因为有序数组,并且复杂度要求O(lg(m+n))所以想 ...
- make makefile cmake qmake都是什么,有什么区别
原文:https://www.zhihu.com/question/27455963 作者:玟清链接:https://www.zhihu.com/question/27455963/answer/36 ...
- Java并发编程实战 读书笔记(一)
最近在看多线程经典书籍Java并发变成实战,很多概念有疑惑,虽然工作中很少用到多线程,但觉得还是自己太弱了.加油.记一些随笔.下面简单介绍一下线程. 一 线程与进程 进程与线程的解释 个人觉 ...
- 高性能内存池NedAlloc
http://www.nedprod.com/programs/portable/nedmalloc/ http://blog.sina.com.cn/s/blog_6f5b220601012x4t. ...
- ios7.1后setting中没有开启相机服务应用程序相机预览黑屏问题
if ( [[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0){ ...