--------- IMPORTANT --------- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Dimeric Software Product Information Virtual Database (VDB) FULL Version * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Thank you for purchasing VDB -- we hope you will find it as useful and reliable as we do. If you have any questions or comments, please vist our website... http://www.Dimeric.com/ or send us an email... Support@Dimeric.com Release Notes ------------- 2.1.8 - April 29, 2003 -------------- Changes in VDB -------------- * VDBPostProtect - New post ID may now be supplied by the application. For example, the post ID may be obtained from VDBSerialColUtil. * VDBPropertyBag - TryReadPropBag family of functions work like ReadPropBag, but return False rather than raise an exception when the dataset is empty. * VirtualDB - New method IDatabase.Clone and associated enumeration TVDBOpenMode. - Interbase dialect now supports AddDateTime function - New VDB escape function: Scope(). - Add enclosing parenthesis around Sybase/SQL Server MOD function. * VDB_BDE - Fixed bug in GetDefaultParams. ------------------ Changes in Utility ------------------ * DSDataUtil - CopyDataSet now works with a unidirectional source dataset. * DSStringUtil - Deprecated Quote, UnQuote, IsQuoted, and QuoteValues. New routines: QuoteStr, UnquoteStr, and IsQuotedStr. - Bug fix in ChangeFileBase. - New routines: Add StringToCurr and StringToCurrDef. * DSClientDataUtil - MakeClientDataSet now forces all fields to be ReadOnly = False. - All impelemntations of IDataSet now also implement IPersistObject. - MakeClientDataSet no longer uses a provider. - ConfigureClientDataSet now allows you to skip creating indexes. - ReadSimpleDataSet no longer creates Required fields. * DSPropertyBagDB - TryReadPropBag family of functions work like ReadPropBag, but return False rather than raise an exception when the dataset is empty. * DSSmartRecord - Allow multiple parallel datasets in TSmartRecordDataSetIterator. - New type: ISmartRecTransform. * DSWebPlugin - HandleWebRequest now uses DSLog to log exceptions that prevent it from sending a response. * DSDataExport - Now supports unidirectional datasets. * DSAES - New unit: implements AES (Rijndael) encryption. * DSBaseDataSet - New unit: base class for custom TDataSets. * DSChunkedStreams - New property of chunked input streams: BreakOnException. * DSDataSet - All impelemntations of IDataSet now also implement IPersistObject. - Support SQLTimeStamp and FMTBCD custom variants. - Raise an exception when attempting backwards or random access, or when using RecordCount, when IsUniDirectional is True. * DSFileUtil - Enhancements to DeleteFiles: you may now specify the following set of options: CheckErrors, IncludeFolders, IncludeReadOnly. - Use OSCheck when calling ForceDirectories. - AppendToFile and WriteToFile no longer use Delphi's standard text files. * DSList - New routine NewMaxCountIterator: Returns a wrapper around an iterator, returning at most MaxCount items. - New version of NewIterator: Returns a wrapper around multiple iterators, returning all items in the first iterator, then all items in the second iterator, etc. * DSMap - VariantToHash now uses IHashable interface, defined in DSGenUtil. - New property AutoSize: automatically resizes maps when the hash table is too large or too small. This property is False by default. - New versions of string enumeration routines to support IIntfMap. * DSMiniCalc - Enhanced error messages. - New functions: @IsBlank, @IfBlank, @PrintPropBag, @LoadIniFile, @Error, @SameText, @FileExists. - Bug fix in @IfNull. - New routines: MiniCalcVarToBool, - Support comments (line and block style). - Support empty expressions with overloaded versions of ParseCalcExpr. - Right-hand operand of dot operator may now be a string literal. * DSSchedule - Task exceptions are now logged using DSLog. * DSSocket - Use EDSSilentException. - Enhance TDSSocketDriver.ReadBytes to exit sooner if Count is 0. * DSStringList - Support IPersistObject for name and value iterators. * DSTypedStreams - TTypedInputStream has an IMap (FStrMap) from string to string, for coalescing strings. - TTypedInputStream uses an IList instead of an IMap for the string list. - TTypedOutputStream now maintains a count of the number of strings written. - TTypedInputStream.ReadAnsiString uses FStrMap to coalesce strings. - TTypedOutputStream.WriteObject queries for IIdentity, to drop object references earlier. - TTypedOutputStream.WriteChunkedStream now calls SendException when an error occurs. - TTypedOutputStream.WriteChunkedStream also queries for IMemoryStream for increased efficiency. - ReadVariant/WriteVariant now handle the new unsigned integer variant types added in Delphi6. - Use a string cache that uses a limited amount of memory (for writing). - Support streaming custom variants. - New stream format version constant. * DSWebServer - IWebResponse.Send now supports IInputStream. - Support multipart/form-data content type. - TMemWebSeshMgr now uses DSLog to log exceptions while leading and saving sessions. - New property of IWebServer: LastRequestTime. * DSStreams - All implementations of IMemoryStream now implement IPersistObject. - ITypedInputStream.ReadStreamAsString has been removed (was deprecated). - TMemStream.ReadObject no longer uses ReadStreamAsString, but now uses ReadChunkedStream. - TMemStream.WriteObject no longer uses WriteBuffer, but now uses WriteChunkedStream. * DSContext - New overloaded method of ITransContext: GetObject. Works like QueryInterface. * DSLog - New routines: LogError and LogErrorMessage. - New routine: InitLogEx. - InitLog no longer takes a threading argument. - InitLog now releases old log object before assigning new log object. * DSGenUtil - New type: IHashable. - New function: ObjectsEqual. - New type: IIdentity (base interface for IPersistObject). - New type: TObjectID. - New function: NextObjectID. - Now using SyncObjs. - Ensure that there is an active exception in ReRaiseWithException. - New type: IException. - New function: NewGUID. - New routine: DestructorError. * DSDeployServer - Keep files in staging folder open, so they can't be modified or deleted. - Support the Restart file attribute. * DSConfig: new unit. * DSPropertyBag - TPropBagIteratorWrapper now allows both filter and transform to be nil - New function: NewPropMasterDetailIterator. - New methods of IPropertyBag: GetPropValue and GetSubPropValue. - New routine: LoadIniFileIntoPropBag. - PrintPrpoBag now handles IStringList. - New function: GetStringListProp. Documentation ------------- This product includes context-sensitive help that integrates into the Delphi IDE, as well as three separate files: Streams and Persistence.rtf - Detailed introduction to the streaming sub-system of DSTools (DSStreams.pas and DSTypedStreams.pas). MiniCalc.pdf - Detailed reference for MiniCalc, the expression parser/evaluator offered by DSTools (the MiniCalc.pas unit). VDB-Tutorial.pdf - A detailed tutorial for VDB. This is the same information that can be found in the context- sensitive help (minus the reference section), but in a format that is more printer-friendly. This product also ships with a demo application, named VDBDemo. This program illustrates how to perform many common operations, all of which are implemented using both VDB and BDE (for comparison purposes). The demo application is a good place to get started with VDB. VDB Explorer ------------ VDB Explorer was inspired by Borland's SQL Explorer, but has a subset of its functionality. VDB Explorer works with any database that is supported by VDB (not just BDE). It also has a few features missing from SQL Explorer: *) Ability to cut-and-paste in the data-aware grid. *) Ability to export the contents of the data-aware grid to a comma-separated text file. VDB Explorer allows you to browse the tables in a database, and to execute SQL statements against a database. It comes in handy when you need to export data to a plain text file, or simply to test a VDB profile string. You may define new profile strings for use with VDB Explorer in the "VDBExplorer.ini" file. It is also possible to add and modify profile strings interactively within VDB Explorer, but the user interface for doing this is rather quirky (this will be addressed in an upcoming release). The file "VDBExplorer.ini" is only used by VDB Explorer -- your own VDB applications should use their own INI files (or the registry, or whatever other mechanism you prefer). Please make sure that VDBExplorer is not running when you edit the "VDBExplorer.ini" file. Deploying Applications Built With VDB ------------------------------------- VDB features royalty-free application deployment. You may distribute free of charge applications (EXE files) and libraries (DLL and BPL files) built with VDB and/or DSUtil. You may not distribute VDB or DSUtil source code (PAS, INT, DCU and DCP files). See the software license (License.txt) for more information.