经过1个多月的测试,终于发布正式版。
5.06.20 July 11 2018
Important notes (changes that may break existing code)
======================================================
* Remote Desktop require Seattle or newer to compile.
New stuff
=========
- Added TkbmMWONObject.AssignObject which assigns another ON object
values to the current one, clearing the original values.
- Added TkbmMWONObject.MergeObject which merges another ON object
values into the current one, potentially preserving the original
values.
- Added function kbmMWWildcard2RegEx(const AWildCard:string):string;
in kbmMWGlobal.pas. It converts a file wildcard string to a valid
regular expression string. It supports * and ?.
- Added boolean triggerModified option to kbmMW_Field attribute.
It controls if changes to that particular ORM field in the class
should indicate that the data has been modified and thus resolves.
Default true.
- Added mwoctfNonDestructive to TkbmMWORMCompatibleTableFlag.
Can be used in CompatibleTable, UpgradeTable and CreateOrUpgradeTable
to control if only non destructive changes should be made to
make an existing table compatible. If set, fields will not be removed,
renamed, its field type changed or made smaller in size or precision.
Indexes, primary or unique constraints will also not be changed.
- Added SkipNoNameColumns property to TkbmMWCSVStreamer. Default false.
If false and property Header is true, columns with an empty name will
be given a name using DefaultNamePrefix and a column number.
If true and property Header is true, columns with an
empty name will be skipped.
- Added property AutoActivate:boolean to TkbmMWCustomConnectionPool.
Default true. If true and a connection is attempted to be obtained
the connection pool is automatically set to active, else an exception
is thrown.
- Added TkbmMWMultithreadMessageActionProcessor which works similar to
TkbmMWMessageActionProcessor except all messages are executed
completely asynchronously. Be aware that execution order may be different
than message post order.
- Added new kbmMWProcess unit containing process related classes.
(currently only for Windows).
- Added function Split(const AGroupFields:string; const AHaving:string=''):IkbmMWLinqStages;
to IkbmMWORMStage. It will split data in the stage into multiple
stages according to Group By and Having like rules.
Eg. stages:=Linq.Using(..).Split('fld1,fld2','fld2>2');
- Added OnLogin2, OnLoginSuccess2,OnLoginFail2,OnLogout2,OnAuthorize2,OnTrace2 events
to TkbmMWAuthorizationManager. They are alternatives to existing events and are
called after the "old" events. The events take a context instance which
contains all information known during the autorization operation.
The data in the context can be modified on the fly to override default
behaviour.
- Added unit kbmMWInfTRNG (Enterprise Edition) which provides support for
hardware based true random noise generators for generating random numbers.
This is usually considered the cryptographically most secure random generator.
Default it supports https://13-37.org/en/infinite-noise-trng but
others can be used aswell as long as they can generate random data
into a file. TkbmMWInfTRNG32 and TkbmMWInfTRNG64 are surfaced as
default random number generator classes.
Changes/minor additions
=======================
- Updated unittests.
- Added (const AWaitUntilStopped:boolean=true) argument to Stop method
in TkbmMWCustomMessageProcessor.
- Added property TopIfExists:TkbmMWDOMXMLNode to TkbmMWDOMXML.
Returns top (non declarative) node if it exists, else nil.
- Updated TkbmMWORM.ModifiedValuesToDataset to attempt to leave record position
the same.
- Updated kbmMWFastCGI unit to use kbmMWProcess unit.
- Added function DiffMinutes(const AValue:TkbmMWDateTime):integer; to
TkbmMWDateTime.
- Added optional ATopName:string to PrepareXMLStorage in TkbmMWConfiguration.
Default 'config'.
- Remote Desktop require Seattle or newer to compile.
Fixes
=====
- Fixed TkbmMWDateTime.DiffDays, DiffHours and added DiffMinutes.
- Fixed TkbmMWConfiguration bug introduced in 5.06.10 by the
case insensitive object notation changes.
- Fixed TkbmMWONCustomObject.Path issue when instantiating
final ON custom object.
- Fixed nasty string sharing bug in TkbmMWStringBuilder when isntance
was reused with preceded by Clear.
- Fixed A/V in TkbmMWYAMLStreamer.LoadFromUTF16String when
not able to parse due to empty or syntax error.
- Fixed incorrect calculation in kbmMWMimeDecodedSize which cound result
in buffer overruns.
- Fixed A/V in TkbmMWBPParser.Create and TkbmMWBPParser.CreateFromString
when syntax error or empty definition.
- Fixed TkbmMWCustomConnectionPool to ensure all properties are read
during component load, before it is set to active.
- Improved AMQP client disconnect handling and fixed channel leak.
- Fixed IkbmMWLinqStage.GroupBy to require , between field names.
- Fixed incorrect TkbmMWDateTime DiffHours and DiffDays.
- Fixed bugs in TkbmMWConfiguration.