zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    php 判断访问是否是手机或者pc
    SQLSTATE[HY000] [2002] No such file or directory
    No input file specified.
    Call to undefined function openssl_decrypt()
    Parse error: syntax error, unexpected 'class' (T_CLASS)
    tp5关联模型进行条件查询
    windows下php7.1安装redis扩展以及redis测试使用全过程
    SourceTree跳过初始设置
    对象数组(JSON) 根据某个共同字段 分组
    SDUT 3377 数据结构实验之查找五:平方之哈希表
  • 原文地址:https://www.cnblogs.com/xalion/p/10850301.html
Copyright © 2011-2022 走看看