这是一个小版本更新。
5.13.00 Nov 4 2020
New stuff
=========
- Added support for rewriting SQL containing joins. Currently ANSI SQL 92 joins are understood.
- Added support for auto unscheduling scheduled event upon exception.
It is set via the property UnscheduleException on the scheduled event instance (kbmMWScheduler.pas)
- Added support for nullable lookup (outer lookup) in ORM. Returns NULL values when a referenced lookup
is not found. If the field is defined as not null, then an inner join will be used, else an outer
join will be used.
- Added TkbmMWThreadObjectList<T:class> class (kbmMWGlobal.pas)
- Added TkbmMWAuthorizationLogins.Get which takes an actor instance and returns list of matching logins.
- Added TkbmMWAuthorizationManager.Logout(const AActor:TkbmMWAuthorizationActor)
It will log out all registered logins for the specific actor.
- Added TkbmMWRTTI.IskbmMWDateTime(const AValue:TValue):boolean
- Added TkbmMWRTTI.IskbmMWNullable(const AValue:TValue):boolean
- Added TkbmMWRTTI.GetkbmMWDateTime(const AValue:TValue; var ADateTime:TkbmMWDateTime):boolean
- Added TkbmMWRTTI.GetkbmMWNullable(const AValue:TValue; var AIsNull:boolean; var AResultValue:TValue):boolean
- Updated kbmWMXML to handle mixed data. See blogpost.
- Added CollapseNil and AutoIndentCount properties affecting generation of XML from XML DOM.
- Added new TkbmMWXMLReformatter class which can reformat an invalid XML document according to
certain rules, and in addition it collects names and ids. Quite useful for visual XML editors.
- Added more overloaded methods variations to TkbmMWORM.
- Added new kbmMWHID.pas unit which provides support for Windows USB/HID features including
MagTek magnetic card readers. Define KBMMW_SUPPORT_HID in kbmMWConfig.inc to use.
- Added support for binding to image controls in FMX SmartBind.
Changes/minor additions
=======================
- Changed string list log manager to use Queue rather than Synchronize. (kbmMWLog.pas)
- Added LogSubscriptions to TkbmMWEvents (SmartEvents). Will dump all current notification
subscriptions in the log.
- Improved TkbmMWRTTI.CompareValue to be able to compare interface instances.
- Updated kbmMWSQLite.pas SQL adapter to make SQLite create_function available.
- Added missing code for TkbmMWCustomBlockCipher128.DecryptECB(const Indata; var Outdata; Size: longword)
- Updated object marshalling to allow for marshalling properties on list types.
- Made numerous improvements in both performance, stability and functionality in SmartBind.
Including a new callable (from within a binding expression) function called 'data'.
It can be given without arguments, in which case it returns the data directly, or
it can be called with one argument which is a property or a property path (property.property....)
to the specific subproperty of the source value, one wants data from.
- Improved LINQ AsStrings variants to allow for optional strings instance which is populated and returned
instead of a newly generated one.
- Updated TkbmMWCustomResolver with GetIsNullByFieldName, GetIsNullByField and GetIsNullByIndex functions.
- Improved TkbmMWStringBuilder.ToString to allow optional offset and length indication.
Fixes
=====
- Improved SmartEvent stability.
- Fixed minor bugs, warnings and hints.
- Fixed kbmMWBackupFile when ADestPath is an empty string.
- Fixed TkbmMWJPEG.CompressBitmapToStream and TkbmMWJPEG.DecompressStreamToBitmap
to work correctly in a threaded environment.
- Fixed Scheduler interval issue when running in second intervals.
- Fixed TkbmMWAuthorizationManager.DeleteActor so it will autologout the actor to delete.
- Fixed TkbmMWRTTI.ConvertValue2Variant to return null value is a null kbmMWNullable type.
- Fixed several minor bugs and made improvements to ORM.
- Fixed loadbalancing service time stamping.
- Fixed bugs in TkbmMWSQLJSONAPI related to subset extraction.