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 发布的更多相关文章

  1. 开启kbmmw 5.09 中的XML-RPC和 JSON-RPC 服务

    kbmmw 5.09 里面增加了XML-RPC和 JSON-RPC 服务支持,但是默认没有开启. 需要在安装前,修改kbmMWConfig.inc文件. 加入以下定义 {$DEFINE KBMMW_J ...

  2. koahub.js 0.09 发布,新增钩子机制

    koahubjs发布0.09 新增钩子机制添加钩子机制,控制器钩子和函数钩子修复自动加载bug,实现除自动加载导出的default外,还能自动加载其他的方法记koahubjs钩子开发过程在使用koah ...

  3. kbmMW 5.09测试报告(1)-Scheduler

    这个版本除了增加新的SmartBinding功能,同时提供了大量的功能更新以及bug修正.其中,SmartBinding的介绍,xalion已经第一时间写了初识kbmmw 中的smartbind功能, ...

  4. kbmmw 5.04 发布

    增加了一大波功能,消灭了一大堆问题,也肯定引进了一大票BUG.We are happy to announce the release of our latest version of kbmMW. ...

  5. kbmmw 5.02发布

    5.02.00 May 27 2017 Important notes (changes that may break existing code) ========================= ...

  6. kbmmw 5.01 发布

    Important notes (changes that may break existing code) ============================================= ...

  7. KbmMW 4.5 发布

    We are happy to announce the release of kbmMW v. 4.50.00 Professional, Enterprise and CodeGear Editi ...

  8. kbmMW 5.09.00是个必须升级的版本!

    这几天遇到的几个问题,从5.08.10升级到5.09.00,自然解决了! 所以建议大家都升级到这个版本. 例如我遇到的问题: 1.在线程中使用ClientQuery注意的问题 2.Invalid pr ...

  9. 使用kbmmw 实现图形验证码

    首先感谢图形验证码的提供者  晴空无彩虹  https://blog.csdn.net/u011784006/article/details/80827181 他用FMX 实现了验证码的生成,我修改成 ...

随机推荐

  1. bzoj 4555 NTT优化子集斯特林

    题目大意 读入n 求\(f(n)=\sum_{i=0}^n\sum_{j=0}^i\left\{\begin{matrix}i \\ j\end{matrix}\right\}*2^j*j!\) 分析 ...

  2. 在vue-cli环境下模拟数据接口及如何应用mockjs

    第一种办法 1.需要先准备json文件 在根目录下新建个oapi文件夹下新建个iorder.json文件将需要遍历的json数据沾里面. 2.在build文件夹下新建dev-server.js 文件 ...

  3. 在tomcat发布项目遇到的问题

    今天从SVN上把系统导入本地发生了异常,问题如下: java.math.BigInteger cannot be cast to java.lang.Long 百度一番后发现是因为使用Mysql8.0 ...

  4. AC日记——Andryusha and Socks Codeforces 780a

    A. Andryusha and Socks time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  5. CSS-@media媒体查询(输出设备中的页面可见区域宽度)

    早上好,仙女刘,首先恭喜你在2019.06.13号也就是昨天生日快乐!希望你在今后的每一天都是开开心心的,爱你哟,早上起床后的在激动心情下的美美哒! 好了,现在进入正题: 在做响应式页面的时候,我经常 ...

  6. Cryptography I 学习笔记 --- 绪论

    课程地址 1. 密码学可以用于保证消息传递的机密性(第三方不可能得到明文)与完整性(密文如果被第三方篡改,有手段可以检测到) 2. 数字签名(用私钥加密待签名文件的hash值) 3. 匿名通信(mix ...

  7. ML | PCA

    what's xxx PCA principal components analysis is for dimensionality reduction. 主要是通过对协方差矩阵Covariance ...

  8. AGC006

    AtCoder Grand Contest 006 <br > 心血来潮,开了一套AGC..... 然后发现各种不会做.........感觉智商被AGC摁在地上摩擦...... <b ...

  9. Failed to check the status of the service报错解决

    报这个错误是因为我的application_context.service.xml 文件里的的dubbo声明暴露口时的ref属性写错了. <dubbo:service interface=&qu ...

  10. Java实验--关于英文短语词语接龙

    在课堂上经过实验之后,重新在宿舍里面从0开始编写大概30分钟左右能够完成这个实验,不是原来的思路. 该实验的表述为:从两个文本input1.txt和input2.txt中读取英文单词,若前面的英文单词 ...