Changes in SynCommons.pas unit:
- now compiles under CrossKylix, and tested under Linux
- new JSONEncodeArray procedures, to create JSON array content from
supplied Delphi arrays (handle RawUTF8 text, double or integer arrays)
- new AddCSV methods in TTextWriter handling Delphi arrays to be added
as Comma-Separated-Values (handle RawUTF8 text, double or integer arrays)
- new definition of PtrInt/PtrUInt, to match NativeInt/NativeUInt types,
available since Delphi 2007 - some code rewrite in order to avoid any implicit
conversion from/to integer/cardinal
Changes in SynCrtSock.pas unit:
- avoid some GPF during client deconnection when the server shut
down
- rewrite HTTP Server handle request loop keep alive timing
- HTTP Server now use a Thread Pool to speed up multi-connections: this
speed up a lot HTTP/1.0 requests, by creating a Thread only if necessary
Changes in SynCrypto.pas unit:
- now use direct Windows threads, since we don't need any
exception handling nor memory usage inside the AES encryption Thread
handler
-> avoid classes.TThread and system.BeginThread()
use
-> application is still "officialy" mono-threaded (i.e.
IsMultiThread=false), for faster System.pas and FastMM4 (prevent CPU locking -
see http://synopse.info/forum/viewtopic.php?id=57
about Delphi & multi-core)
- some other minor fixes and enhancements
Changes in SynZip.pas unit:
- crc32 is now coded in inlined fast asm (crc32.obj is no longer
necessary)
- crc32 hashing is performed using 8 tables, for better CPU
pipelining and faster execution
- crc32 tables are created on the fly during unit initialization,
therefore save 8 KB of code size from standard crc32.obj, with no speed
penalty
Changes in SynSelfTests.pas unit:
- test multi-threaded AES encryption/decryption of 4 MB blocks
- added crc32 tests
Changes in SynGdiPlus.pas unit:
- small enhancements for framework Main Demo release
(RectNotBiggerThan and MaxPixelsForBiggestSide parameter in SaveAs function
e.g.)
Changes in SQLite3.pas unit:
- database engine updated to 3.7.1
- fix issue in TSQLRestServerDB.CreateMissingTables when an
exception occured
- handle now RowID as a valid alias to the ID field (needed for
TSQLRecordFTS3)
- handle TSQLRecordFTS3 record, for using FTS3 virtual tables,
i.e. implementing full-text search (including dedicated regression tests)
Changes in SQLite3Commons.pas unit:
- update engine to version 3.7.1
- fixed error calling a TSQLRestServerCallBack with both record
& parameters
- TSQLRecordSigned must now be signed with a specified content
(content was formerly a fixed field of type RawUTF8, but it didn't apply in all
cases, e.g. if content field is defined as TSQLRawBlob)
- new TSQLRestClientURI.ForceBlobTransfert property which enable
to get and set BLOB fields values with usual Add/Update/Retrieve methods
- new TSQLRestClientURI.RetrieveBlobFields/UpdateBlobFields
methods for retrieving/updating all BLOB fields of a record at once
- better handling of sftID in the User Interface and database use
(e.g. creates a dedicated index for the TSQLRecord published fields)
- some code rewrite in order to avoid any implicit conversion
from/to integer/cardinal after new definition of PtrInt/PtrUInt (matching
NativeInt/NativeUInt types, available since Delphi 2007)
- updated TSQLRibbonTabParameters object, with some new fields
dedicated to the automatic edition of records, via the new SQLite3UIEdit
unit
- new sftSet SQL field kind, handling a TSQLRecord published
property with a set of enumeration as Delphi type (stored as bit-mapped
INTEGER)
- handle now RowID as a valid alias to the ID field (needed for
TSQLRecordFTS3)
- defines a new TSQLRecordFTS3 type, for defining a FTS3 virtual
table, i.e. implementing full-text search
Changes in SQLite3UILogin.pas unit:
- improved Delphi 2009/2010 UnicodeString compatibility
- new PassWord method to enter a password e.g. for Cypher (i.e.
with no UserName)
Changes in SQLite3ToolBar.pas unit:
- improved Delphi 2009/2010 UnicodeString compatibility
- add TMS components stylers coherency update
- added TSQLRibbon to factorize most used Ribbon-related User
Interface data, functions and events in one class
Changes in SQLite3UIQuery.pas unit:
- custom queries can now handle standard operators, following a
specified set
- TSQLQueryEvent() usage has therefore been modified for custom
queries
Changes in SQLite3UI.pas unit:
- improved Delphi 2009/2010 UnicodeString compatibility
- fix some issues, and complete implementation of marking from
time elapsed
New SQLite3UIEdit.pas unit:
- Initial Release, handling most common kind of SQL field (sftRecord,
sftTimeLog, sftCurrency, sftDateTime, sftFloat and sftBlob) are not handled
yet, because is not needed; perhaps sftTimeLog, sftCurrency, sftDateTime and
sftFloat should be handled in the future (using TDateTimePicker or a to be
written TSynExtendedLabeledEdit components)
- all user interface (fields, layout, etc...) is created from RTTI data
and some custom parameters
Changes in SQLite3Pages.pas unit:
- new AppendRichEdit method to draw RichEdit content
- new WordWrapLeftCols property used to optionaly word wrap caLeft
columns into multiple lines, i.e. if the text is wider than the column width,
its content is wrapped to the next line (set to false by default) - this also
will handle #13/#10 in column text as a "go to next line" command
Changes in SQLite3i18n.pas unit:
- new TLanguageFile.BooleanToString method, returning 'No' or
'Yes'
- new TLanguageFile.PropToString method to convert a TSQLRecord
published property value into ready to be displayed text
Changes in SQLite3UIOptions.pas unit:
- some code refactoring to share code with the new SQLite3UIEdit
unit
- minor fixes and enhancements
Last minute update:
Main version updated to 1.9.1:We had to update the SQLite3 internal engine to version 3.7.2: an obscure but very old bug makes SQLite authors recommend to use 3.7.2 for all new development.
Upgrading from all prior SQLite versions is also recommended. See http://sqlite.org/releaselog/3_7_2.htmlSo we do. And increase our version number to 1.9.1.
Don't forget to consult the draft version of the documentation of this framework!
The full source code from the framework is available to download from
SynopseSQLite3.zip
licensed under a MPL/GPL/LGPL
tri-license.
Compatible with Delphi 7 to Delphi 2010.
Comments and feedback are welcome on our forum:
http://synopse.info/forum/viewtopic.php?id=96