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 实现了验证码的生成,我修改成 ...
随机推荐
- net7:Web用户控件ascx的使用及其动态加载
原文发布时间为:2008-07-30 -- 来源于本人的百度文章 [由搬家工具导入] Web用户控件test.ascx的源代码: using System;using System;using Sys ...
- 【MFC】定时器的使用(转)
原文转自 http://blog.csdn.net/hellozhd/article/details/8213359 在对话框中使用定时器: 1.定义定时器 #define TIMER1 1 2.开启 ...
- Android 动态隐藏显示导航栏,状态栏
Talk is cheap, show me the code. --Linus Torvalds Okay, here: 一.导航栏: [java] view plain copy private ...
- 你也可以当面霸-MVC的原理及特点
MVC是面试中经常被问到问题,如果能把MVC的原理简单清楚的描述出来,肯定会在面试官的心目中加分. 如果在能画图的情况下,画出一张MVC的流程图,无疑能简化不少概念上的术语,如果不能也不要紧,只要把核 ...
- eclipse启动的时候 一直未响应状态 然后闪退
解决方案:在你的工作目录中,有一个.metadata目录,里面是工作区及各插件的信息,删除此目录可以解决问题.保险起见,先剪切到另一地方.再重启启动.
- k8s之nginx-ingress、 Daemonset实现生产案例
上一篇中用node ip + 非80端口,访问k8s集群内部的服务.实际生产中更希望用node ip + 80端口的方式,访问k8s集群内的服务. # 修改mandatory.yaml中创建控制器部分 ...
- Java Unsafe类
参考了这篇文章:http://blog.csdn.net/aesop_wubo/article/details/7537278 <JAVA并发编程学习笔记之Unsafe类> Unsafe开 ...
- Linux/ visual studio 编译使用Poco
1. 下载源码包.在POCO的官方网站下载最新的POCO源码包.http://pocoproject.org/download/index.html2.解压源码包.下载的文件名是“poco-1.6.0 ...
- spl_autoload_register的使用
class Loader{ static function loadClass($class) { $class = $class.'.php'; if(file_exists($class)) { ...
- 关于Win8 用不了USB转串口驱动
win8系统必需要关闭设备驱动自己主动更新,否则联网更新的驱动是用不了的.操作过程例如以下: 打开控制面板,搜索"设备".更改设备安装设置 watermark/2/text/aHR ...