Delphi compilers with support for the inline
directive (starting with Delphi 2005) failed to compile DIContainers *.bpl packages for the Demo and Commercial editions. They generated a “[dcc32 Fatal Error] DIUtils: F2051 Unit DIContainers was compiled with a different version of DIUtils.StrSameIW”. Regular *.exe applications compiled without problems. The DIContainers Source Code also compiled to both *.bpl packages and *.exe applications with no problems.
DI.inc
include file. Directly link in DICompilers.inc
instead.DI_No_Classes
compiler directive.DI_No_Range_Checking
compiler directive to DIC_Unsafe
.TDIStringTree
element type from AnsiString to just String.TDIInterfaceVector
with NewDIInterfaceVector
and NewDIInterfaceOwnerVector
constructor functions (Delphi 6 and later only).TDIItemHandler
and TDIKeyHandler
reference counting.TDINativeIntList
, TDINativeIntTree
, TDINativeIntVector
.TDINativeUIntList
, TDINativeUIntTree
, TDINativeUIntVector
.TDIUnicodeString2NativeUIntVector
.GetDIUnicodeStringObjectOwnerItemHandler
did not free objects.TDIVector
.TDIInteger3Vector
.TDIHash
high-performance methods:TDIHash.DeleteByKeyNoPack
TDIHash.DeleteByKeyNoFreeNoPack
TDIHash.PItemOfKeyBufOrInsert
TDIStringList
.TDIString2List
.TDIStringTree
.TDIStringVector
.TDIStringCardinalVector
.TDIString2Vector
.TDIString2CardinalVector
.TDIStringHash
.TDIVector
containers).TDIUnicodeStringVector.LoadNamesFromTextFile
and TDIUnicodeString2Vector.LoadValuesFromTextFile
, as well as for their respective TDIVector
and TDIList
classe descendants.TDIObjectHash.ObjectAt
property.UnicodeString
automatically falls back to WideString.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
,DIUnicodeStringItemHandler
.DIUnicodeStringCardinalItemHandler
.DIUnicodeStringIntegerItemHandler
.DIUnicodeStringObjectItemHandler
+ DIUnicodeStringObjectOwnerItemHandler
.DIUnicodeStringPointerItemHandler
+ DIUnicodeStringPointerOwnerItemHandler
.DIUnicodeString2ItemHandler
.DIUnicodeString2CardinalItemHandler
.DIUnicodeStringCIKeyHandler
, DIUnicodeStringCSKeyHandler
.TDIWideStringPointerList
, DIWideStringPointerOwnerList
.TDIWideStringPointerTree
, DIWideStringPointerTree
.TDIWideStringPointerVector
, DIWideStringPointerOwnerVector
.DIWideStringPointerItemHandler
, DIWideStringPointerOwnerItemHandler
.DIContainers
implementation section. They caused some Delphi versions to issue irritating hints when DIContainers
was compiled into a package.TDIHash.Clear
did not reset an internal variable which could result in an access violation when adding new items.for Item in Container do
iterator syntax.TDIItemHandler
's methods.TDIContainer
level, now declared as virtual and overridden in descendant classes.