--------- 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 visit our online support forums... http://www.Dimeric.com/DSWeb/support/index.php or send us an email... Support@Dimeric.com Release Notes ------------- 2.2.3 - May 27, 2004 -------------- Changes in VDB -------------- * DSMiniCalc: New properties/methods of the database object... - QueryValueDef() - ExecSQL() - Open - Close - Ping - PushTrans - PopCommit - PopRollback - StartTransaction - Commit - Rollback - TransactionsSupported - InTransaction New properties/methods on the IParams object: Count and Get(). New enumerations: TFieldType and TParamType. * VDBWebSession: We now increment the in-memory version number after saving to the database, which increments the version stored in the database. * VDBDataCache: Defined the LoadData method, which allows you to populate the cache (besides having cache misses). * VDB_ADS: Define SERVERTYPES profile option, to support Advantage 7.0. * VirtualDB: - New functions: LoadProfilesFromPropBag, VDBParseStatements. * VDB_InterBase: Fixed bug with detecting unique indexes. ------------------ Changes in Utility ------------------ * General: All units now work with Range Checking on. * New Units: - DSPaintBox.pas - DSPanelBtn.pas * DSSchedule: Defined NewTask functions, to create an ITask object from a procedure/method pointer. * DSObject: Define several overloaded versions of Join that operate on iterators. * DSStringUtil: - New sub-string searching functions: HasString and HasText. - New character counting functions: CountChar and CountChars. - New function: UnderscoresToCamelCaps. * DSSet: Sets now have a Name property, for use in exceptions. * DSList: - Join method. - Bug fix: TIntfList.ReadObject was not attempting to re-use existing instances. - Make ReadObject & WriteObject virtual in TIntfList. * DSSmartRecord: - Enhance ISmartRecordList to include all clone/copy options defined in ISmartRecord. - Retire DeepCopySmartRecord(List) and DeepCloneSmartRecord functions. - New routines: WriteSmartRecAsPropBag and ReadSmartRecAsPropBag. * DSRSync: After CloseLayer is called, make sure EOF returns True (as opposed to raising an exception). * DSMathUtil: Performance tuning to IsPrime. * DSTypedStreams: Rename StringCache to StringCacheEx. * DSMap: - Define IStringCache and NewStringCache. - New Methods: Enumerate, KeyList, UniqueKeyList, ValueList. - Define Name property for use in exceptions. * DSPropertyBag: - Enhancement to ReadPropBag: support for sub-objects. - ReadProbBagList uses IStringCache to coalesce duplicate strings, which saves memory. * DSStringList: - Make ValueFromIndex more efficient. - Don't allow Index to be negative in SetValueFromIndex. - Fix stream format - stop using the Text property. * DSConfig: Config files now process .pre.confg and .post.config files (if these files exist). * DSWebServer: - Define IWebServer.EnableDefaultLogging. - Expose the current peer socket of the web server. This allows the application to reference the Data property of the peer socket. Also, provide an application call-back for peer sockets closing. * DSSortUtil: Performance enhancements in QuickSort: - No longer need a temp element. - No longer compare an element with itself. - No longer swap an element with itself. * DSDataExport: Added TrimMode parameter. * DSLaunchUtil: - Expose TProcessInformation from IProcess. - Added PrintDocument routine. * DSSocket: Expose the current peer socket of the threaded server socket. This allows the application to reference the Data property of the peer socket. * DSPersistTypes: - Support TPoint. - Support TCaseSensitivity. - Support TDirection. - Support TFieldType. - Support TInt64Array, TSingleArray, TDoubleArray, TExtendedArray, TCurrencyArray, TDateTimeArray, and TVariantArray. * DSSmartRecListView: - Added ShowDeleted property. - Define List View events, so we can stop using events on the columns. - Don't write Smart Rec GUID if same as ancestor. - ReadOnly property defaults to True. - Fix exception when clicking on a column that has no sorting defined. * DSDataUtil: - Only disable/enable controls on bidirectional datasets. * DSStreams: - NewOutputRedirectStream. - Run Length Encoding/Decoding Streams. - Implement stream Closers - layers which control how the Close method of a wrapped stream works. - Define TextChars property for IBinaryDetectorStream. - Default TextChars to exclude #127 (del). * DSMiniCalc: - New routine: FormatEx, a version of Format that works on Variant values. - New functions: @ExtractFileName @ExtractFilePath @ExtractFileExt @ExtractFileBase @Raise @Error @Break @Continue @Exit @GetNamePart @GetValuePart @Parse @Expr @IsExpr @IsFunc @Return @IndexOf @FindFirst @ParseCSV @NewFileOutStream @GetSubValue @HasSubValue @SetSubValue @AsVect @GetValues @Low @ApplyDefault - New language features: functions if/then/else statements for loops (Delphi style, Java style, and foreach style) while loops ++ and -- operators try/finally/end try/except/end - Define @MaxInt/@MinInt as High/Low of Integer. - Define @MaxVarInt/@MinVarInt as High/Low of Int64. - Define GetVarName function, which determines whether a MiniCalc expression is just a variable reference, and if so returns the name of the variable. - Allow built-in functions to have names. - ICalcExpr objects can now be printed (w/ pretty formatting). - MiniCalcInspect now supports ICalcExpr. - @Evaluate now supports ICalcExpr. - @Format now supports %* and %*.* syntax. - "Call of non-function" exception now shows the offending expression (for easier debugging). - Include filename/location in MiniCalc error messages. - ParseCalcExpr now allows starting location to be specified. - Fix bug with @Aggregate functions. - Keep MiniCalc keywords in a map, for faster lookup. - MiniCalcStrToVar now handles TDateTime values. * DSPropertyBag: - Enhancement to ReadPropBag: support for sub-objects. - Added Boolean FieldHeaders to PropBagListToText. - Added ClearProps and ClearProp routines. - New routine: ComparePropBags. * DSGenUtil: - Move THeaderMode from DSDataExport to DSGenUtil. - TPoint functions: SamePoint, AddPoints, SubPoints, MulPoint. - Added DateTime routines for Quarters: StartOfTheQuarter, EndOfTheQuarter, IncQuarter, DecQuarter. - Added "Dec" DateTime routines to match the "Inc" DateTime routines in DateUtils: DecYear, DecMonth, DecDay, DecHour, etc. - Added SystemLoginIsValid. - New routines: TryStrToDay, StrToDay, TryStrToMonth, StrToMonth. - New routines: ResolveAssociationProp, GetAssociationSubField, HasAssociationSubField. - Add CompareCardinals. * DSGuiUtil: - Added NestedControlAtPos. - Added SameFonts. - Added DeactivateControls. - Added CheckBoxStateToBoolean and BooleanToCheckBoxState. - Added procedure ClearControls. 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.