Delphi Inspiration – Delphi Components and Software Applications

Version History

DIContainers 3.2.2 – 24 Apr 2010

  • New TDIHash high-performance methods:
    • TDIHash.DeleteByKeyNoPack
    • TDIHash.DeleteByKeyNoFreeNoPack
    • TDIHash.PItemOfKeyBufOrInsert
  • Correct some minor documentation glitches.

DIContainers 3.2.1 – 9 Apr 2010

  • New TDIStringList.
  • New TDIString2List.
  • New TDIStringTree.
  • Improved and easier to navigate documentation.

DIContainers 3.2.0 – 17 Dec 2009

  • New TDIStringVector.
  • New TDIStringCardinalVector.
  • New TDIString2Vector.
  • New TDIString2CardinalVector.
  • New TDIStringHash.
  • Fix bugs with WideString / UnicodeString comparisons in FindValueCS / FindValueCI (i.e. for TDIVector containers).
  • Additions and bug fixes to DIUtils.

DIContainers 3.1.0 – 14 Sep 2009

  • Delphi 2010 support.
  • Implement UnicodeString / WideString versions for TDIUnicodeStringVector.LoadNamesFromTextFile and TDIUnicodeString2Vector.LoadValuesFromTextFile, as well as for their respective TDIVector and TDIList classe descendants.
  • Add the missing TDIObjectHash.ObjectAt property.

DIContainers 3.0.1 – 31 Jan 2009

  • Work around an unexpected Delphi 2009 automatic numeric AnsiChar Unicode conversion in DIUtils.pas which caused an error when compiled on a Windows OS set to a non-European (Asian, Cyrillic, etc.) codepage.

DIContainers 3.0.0 – 24 Nov 2008

  • Delphi 2009 support. In older Delphi versions, UnicodeString automatically falls back to WideString.
  • New UnicodeString containers:
    • TDIUnicodeStringHash, TDIUnicodeStringList, TDIUnicodeStringTree, TDIUnicodeStringVector.
    • TDIUnicodeStringCardinalList, TDIUnicodeStringCardinalTree, TDIUnicodeStringCardinalVector.
    • TDIUnicodeStringIntegerList, TDIUnicodeStringIntegerTree, TDIUnicodeStringIntegerVector.
    • TDIUnicodeStringObjectList + DIUnicodeStringObjectOwnerList, TDIUnicodeStringObjectTree + DIUnicodeStringObjectTree, TDIUnicodeStringObjectVector + DIUnicodeStringObjectOwnerVector.
    • TDIUnicodeStringPointerList + DIUnicodeStringPointerOwnerList, TDIUnicodeStringPointerTree + DIUnicodeStringPointerTree, TDIUnicodeStringPointerVector + DIUnicodeStringPointerOwnerVector.
    • TDIUnicodeString2List, TDIUnicodeString2Tree, TDIUnicodeString2Vector.
    • TDIUnicodeString2CardinalList, TDIUnicodeString2CardinalTree, TDIUnicodeString2CardinalVector,
  • New UnicodeString item handler units:
    • DIUnicodeStringItemHandler.
    • DIUnicodeStringCardinalItemHandler.
    • DIUnicodeStringIntegerItemHandler.
    • DIUnicodeStringObjectItemHandler + DIUnicodeStringObjectOwnerItemHandler.
    • DIUnicodeStringPointerItemHandler + DIUnicodeStringPointerOwnerItemHandler.
    • DIUnicodeString2ItemHandler.
    • DIUnicodeString2CardinalItemHandler.
  • New UnicodeString key handler units:
    • DIUnicodeStringCIKeyHandler, DIUnicodeStringCSKeyHandler.

DIContainers 2.3 – 1 Jul 2008

  • New containers:
    • TDIWideStringPointerList, DIWideStringPointerOwnerList.
    • TDIWideStringPointerTree, DIWideStringPointerTree.
    • TDIWideStringPointerVector, DIWideStringPointerOwnerVector.
  • New item handler units:
    • DIWideStringPointerItemHandler, DIWideStringPointerOwnerItemHandler.
  • Improve compatibility for parallel installation with other DI packages.

DIContainers 2.2.1 – 15 May 2007

  • Replace incorrectly compiled HTML Help file with working version.
  • Remove non-interfaced functions from DIContainers implementation section. They caused some Delphi versions to issue irritating hints when DIContainers was compiled into a package.

DIContainers 2.2 – 13 May 2007

  • Delphi 2007 support.
  • Add XP Themes to Demo projects.

DIContainers 2.1 – 28 Dec 2005

  • Added support for Delphi 2006 Win32.
  • Added the the functions MaxNumber and MinNumber the the Number list and vector containers.
  • Fixed a bug where TDIHash.Clear did not reset an internal variable which could result in an access violation when adding new items.

DIContainers 2.0.3 – 14 Oct 2005

  • Added Delphi 3 compatibility to the utility units.
  • Resolved dependency issues when DIContainers is used in parallel with other DI products.

DIContainers 2.0.2 – 31 Sep 2005

  • Fixed a small packaging bug in the Demo edition which unfortunately slipped into the last update. Commercial and Source code editions do not require this update.

DIContainers 2.0.1 – 31 Aug 2005

  • Compatibility with other DI products.

DIContainers 2.0 – 14 Apr 2005

  • Added support for Delphi 2005 Win32.
  • Added support for the new Delphi 2005 for Item in Container do iterator syntax.
  • Multiple speed optimizations:
    • Reduced number of arguments to most of the TDIItemHandler's methods.
    • Faster hash functions for strings and character data.
    • Other, internal speed optimizations.
  • Multiple interface simplifications:
    • Moved some commonly used methods to the TDIContainer level, now declared as virtual and overridden in descendant classes.
    • Changed some readonly container access properties to functions.
    • Removed some rarely used arguments from indexed item access properties.
    • Added overloaded versions of many low level methods to provide both simple and advanced item access.
    • Container iterator callbacks now reference a method of an instance object instead of a simple function.
  • Bug fixes.

DIContainers 1.61 – 17. January 2004

  • Added units implementing the TDIObjectHash container:
    • DIObjectHash
    • DIObjectOwnerHash

DIContainers 1.60 – 13. December 2003

  • New typed properties NameOf, ValueOf, NumberOf, and so on with user specified compare function.
  • Some new typed containers.
  • Various other improvements.
  • AddressBook example project did not compile with the latest updated components.
  • Minor bug fixes and optimizations.
  • Improved Help.

DIContainers 1.53 – 20. March 2003

  • Added missing range checking code for TDIHash containers.
  • Added TDIIntegerHash container and additional WideString containers.
  • Added DINullItemHandler to ease creation of simple lookup hash containers which do not need any data items.
  • Added TDIHash.ExistsKey and TDIHash.ExistsKeyBuf functions to quickly check if hash containers contain a certain keys without retrieving their values.
  • Added auto-generated *.hpp and *.obj files for using DIContainers with C++ Builder. This is for testing purposes only, DIContainers do not officially support C++ Builder.

DIContainers 1.52 – 6. January 2003

  • Established compiler compatibility with other Delphi Inpiration products.
  • Experimental Kylix support (Source Code only).

DIContainers 1.51 – 18. December 2002

  • Corrected an error where Items were not freed in Pointer owner containers like NewDIPointerOwnerVector.
  • Minor enhancements.

DIContainers 1.50 – 18. November 2002

  • Added various new typed containers, mostly concerned with WideStrings.
  • Corrected a pointer arithmetic bug in TDITree.MoveAfter, TDITree.MoveChildFirst, and TDITree.MoveChildLast procedures.
  • Code optimizations and minor bug fixes.

DIContainers 1.10 – 22. March 2002

  • New typed containers added:
  • TDIPointerList, TDIPointerTree, TDIPointerVector, each holding Items of 1 Pointer. The TDIPointerVector is most similar to Delphi's TList object, but also inherits the additional methods and properties of TDIVector. Their data owner counterparts are in DIPointerOwnerList, DIPointerOwnerTree, and DIPointerOwnerVector.
  • TDIAnsiStringPointerList, TDIAnsiStringPointerTree, TDIAnsiStringPointerVector, each holding Items of 1 AnsiString and 1 Pointer, plus their data owner siblings in DIAnsiStringPointerOwnerList, DIAnsiStringPointerOwnerTree, DIAnsiStringPointerOwnerVector.
  • TDIAnsiStringInteger2List, TDIAnsiStringInteger2Tree, TDIAnsiStringInteger2Vector, each holding Items of 1 AnsiString and 2 Integer numbers.
  • Bug fixes.

DIContainers 1.01 – 17. January 2002

  • Fixed a bug in TDIList.DeleteFirst and TDIList.DeleteLast which did not pass the correct pointer to TDIItemHandler.OnFreeItem.
  • Subclassed TDIReader and TDIWriter to TDIBinaryReader and TDIBinaryWriter respectively to allow more flexibility creating custom readers and writers.

DIContainers 1.00 – 11. December 2001

  • Introduced the concept of Item Handlers and Key Handlers (TDIItemHandler / TDIKeyHandler). Containers now store just a reference to an Item handler instead of all different functions responsible for data handling. This results in a much reduced memory footprint: The empty TDIVector and its descendants have an InstanceSize of just 16 bytes, whereas Delphi's TStringList occupies 44 bytes.
  • Regorganized the assignment implementation. Instead of checking a container's class (heritage), TDIList.Assign, TDITree.Assign, etc. now work on containers with the same ItemHandler, using the ItemHandler's OnCopyItem for the actual copying.
  • Improved the streaming implementation, which also takes advantage of the new Item handlers. Streaming can now be customized by the TDIItemHandler.OnReadItem and TDIItemHandler.OnReadHeader as well as by setting the appropriate StreamInfo parameters when saving or loading. Streaming of nested containers is now also possible and custom version information may be included via the Extra parameter.
  • The Dictionary containers have been merged with the Hash containers. The TDIHash conatainer is now also able to maintain keys of variable length, thanks to the new TDIKeyHandler class the Dictionary containers are no longer needed.
  • All ready-made containers have been updated to use the new features, and a few new containers have been included.
  • Other improvements and bugfixes.
products/containers/history.txt · Last modified: 2010/04/25 00:17 (external edit)