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 实现了验证码的生成,我修改成 ...
随机推荐
- es6总结(三)--数组
- Yii使用find findAll查找出指定字段的实现方法
Yii使用find findAll查找出指定字段的实现方法,非常实用的技巧,需要的朋友可以参考下. 用过Yii的朋友都知道,采用如下方法: 查看代码 打印 1 modelName::model() ...
- 十六进制字符串jpg图片互转
十六制字符串jpg图片互转(格式:FFD8FFE000104A******)如:FFD8FFE000104A46494600010100000100010000FFDB0043000806060706 ...
- ssm实现查看流程图
jsp <!--显示数据列表--> <tbody id="TableData" class="dataContainer" datakey=& ...
- 邁向IT專家成功之路的三十則鐵律 鐵律十八:IT人求職之道-文化
IT人所從事的工作是一個求新求變速度最快的行業,因此您所待的企業IT部門或資訊公司,其組織文化將關係到您在這間公司服務期間,是否能夠快速成長的決定因素.遇到不良的組織文化建議您三個就可以走人了,千萬別 ...
- 【spring boot】13.在spring boot下使用多线程
使用场景: 方法处理到某一步,需要将信息交给另一个线程去处理!! =================================================================== ...
- Samp免流软件以及地铁跑酷的自校验分析
[文章标题]:Samp免流软件以及地铁跑酷的自校验分析 [文章作者]: Ericky [作者博客]: http://blog.csdn.net/hk9259 [下载地址]: 自行百度 [保护方式]: ...
- c# Dictionary拓展2个key得到1个value
using System.Collections.Generic; using System.Collections; Dictionary<Tuple<int, int>, int ...
- serialVersionUID的作用以及如何用idea自动生成实体类的serialVersionUID
转载:http://blog.csdn.net/liuzongl2012/article/details/45168585 serialVersionUID的作用: 通过判断实体类的serialVer ...
- 使用cacheBuilder实现函数防抖
在接口中出现的相同请求重复且连续发送的情况导致一些业务BUG,需要在接口上实现防抖 使用google的cacheBuilder import com.google.common.cache.Cache ...