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. DataSet用法一:添加代码创建的表DataTable,设置主键外键,读取及修改DataSet表中数据

    原文发布时间为:2008-08-01 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...

  2. css选择器浅谈

    css选择器有很多,种类的话总结起来有5种.即: id选择器,class选择器,elements选择器,级联选择器,相邻选择器. 前三个没什么好说的,分别是id,class和标签的选择,注意选中对象的 ...

  3. Codeforces 842C Ilya And The Tree 树上gcd

    题目链接 题意 给定一棵根为\(1\)的树.定义每个点的美丽值为根节点到它的路径上所有点的\(gcd\)值.但是对于每个点,在计算它的美丽值时,可以将这条路径上某个点的值变为\(0\)来最大化它的美丽 ...

  4. 被动路由跟踪工具InTrace

    被动路由跟踪工具InTrace   InTrace是一款类似于Traceroute的路由跟踪工具.但它不同的是,他不主动发送数据包,而是通过监听当前主机和目标主机的数据包,进行分析,从而获取路由信息. ...

  5. 迅雷中Peer连接信息中的状态解释(转)

    在标准 Peer-to-Peer(P2P 点对点网络)中,以"Flags"表示 Peer Status(Peer 状态).其中: D - 正从 Peer 下载(感兴趣:解阻塞)搜索 ...

  6. 织梦dedecms 去掉后台登陆验证码的方法

    那么有什么办法解决呢? 那么现在就给大家解决织梦去掉后台登陆验证码.   这里面分两种版本 一个是织梦5.6的程序 那么织梦5.6程序的解决办法是: 在织梦DedeCms5.6版本可以通过下面路径对验 ...

  7. vue doubleclick 鼠标双击事件

    Vue-dblclick事件(此外事件还有mouseover,mouseout,click,mousdown...): v-on:dblclick="函数" v-on:click/ ...

  8. npm升级所有可更新包

    使用npm管理node的包,可以使用npm update <name>对单个包升级,对于npm的版本大于 2.6.1,可以使用命令: npm install -g 升级全局的本地包. 对于 ...

  9. Spring 让 LOB 数据操作变得简单易行,LOB 代表大对象数据,包括 BLOB 和 CLOB 两种类型

    转自:https://www.ibm.com/developerworks/cn/java/j-lo-spring-lob/index.html 概述 LOB 代表大对象数据,包括 BLOB 和 CL ...

  10. 关于SharePoint 讨论板的一些知识

    关于SharePoint 讨论板的一些知识         近期公司项目可能要用到讨论板.需求是这种:         怎样在回复中仅仅让查看登陆者和讨论主题公布者的信息.         比方我公布 ...