TkbmMEMTABLE v. 2.33 (10. Mar. 2000) ========================================================================= An in-memory temporary table. BEFORE USING THIS COMPONENT, YOU ARE REQUESTED TO READ ALL OF THIS TEXT DOCUMENT AND SPECIALLY TO NOTICE AND ACCEPT THE DISCLAIMER. Can be used as a demonstration of how to create descendents of TDataSet, or as in my case, to allow a program to generate temporary data that can be used directly by all data aware controls. Copyright 1999,2000 Kim Bo Madsen/Optical Services - Scandinavia All rights reserved. You are allowed to used this component in any project for free. You are NOT allowed to claim that you have created this component or to copy its code into your own component and claim that it was your idea. ----------------------------------------------------------------------------------- PLEASE NOTE THE FOLLOWING ADDITION TO THE LICENSE AGREEMENT: If you choose to use this component for generating middleware libraries (with similar functionality as dbOvernet, Midas, Asta etc.), those libraries MUST be released as Open Source and Freeware! ----------------------------------------------------------------------------------- Im offering this for free for your convinience, and the ONLY thing I REQUIRE is to get an e-mail about what project this component (or derived versions) is used for. You dont need to state my name in your software, although it would be appreciated if you do. If you find bugs or alter the component (f.ex. see suggested enhancements further down), please DONT just send the corrected/new code out on the internet, but instead send it to me, so I can put it into the official version. You will be acredited if you do so. If you find bugs or alter the component (f.ex. see suggested enhancements further down), please DONT just send the corrected/new code out on the Internet, but instead send it to me, so I can put it into the official version. You will be accredited if you do so. To use it, some fields has to be defined, either programmatically by setting up fielddefs, or by double-clicking TkbmMemTable icon on the form. - Rightclick to get menu. - Choose New field. - Specify field name and type + optionally size (only for strings). - Make sure that fieldtype is Data. - Add more optional data, calculated or lookup fields if needed. The field definitions will be stored on the form automatically if created this way. To use it: Use it like any other TTable. E.g.: Open, Add records, Read records, Close. Remember that when the close is issued, all records are forgotten, unless you have manually saved them, or defined a persistent file. Please see the comments in the start of the component source for what’s new in this release. DISCLAIMER By using this component or parts thereof you are accepting the full responsibility of it’s use. You agree to not hold the author responsible in any way for any problems occurring from the use of this component. You also recognize the author as the creator of this component and agree not to claim otherwise! Please forward corrected versions (source code ONLY!), comments, and emails saying you are using it for this or that project to: kbm@optical.dk or to the memtable community at memtable@onelist.com //============================================================================= Support: - Look for new versions at: - The memory table community - http://www.onelist.com/community/memtable - Torry's Delphi Pages - http://www.torry.ru - Delphi Super Pages - http://www.optical.dk - Join the memory table community by sending an empty e-mail to: memtable-subscribe@onelist.com or use a browser to go to http://www.onelist.com/community/memtable - Leave the memory table community by sending an empty e-mail to: memtable-unsubscribe@onelist.com - For more information about the list, please look at: http://www.onelist.com/community/memtable Whats new in v. 2.33 -------------------- Fixes/Enhancements: FindNearest refresh bug in D4 revised. Whats new in v. 2.32 -------------------- Fixes/Enhancements: DeleteIndex A/V bug in D4 fixed. Whats new in v. 2.31 -------------------- Fixes/Enhancements: FindNearest, Resolver, D3 compatible Whats new in v. 2.30 FINAL -------------------------- New stuff: AutoCalcField, RecalcOnFetch Fixes/Enhancements: Clear index bug fixed, before close bug fixed, AttachedTo reset bug fixed. Whats new in v. 2.30c BETA -------------------------- New stuff: StreamToVariant, VariantToStream Fixes/Enhancements: Updated demo project to demonstrate transactions. Whats new in v. 2.30b BETA -------------------------- New stuff: Support for data persistence on the form. Support for snapshots in a variant. Czech translation. Fixes/Enhancements: Fixed record=nil bug on delete of record. New save flag: mtfSaveDontFilterDeltas New property IsFieldModified[i:integer]:boolean; Tabledesigner layout fixed. Whats new in v. 2.30a ALPHA --------------------------- New stuff: Support for record versioning implemented. Support for saving and loading version deltas using SaveToBinary.... with the flag mtfSaveDeltas. Transaction implemented. StartTransaction, Commit, Rollback. New delta resolver class base for handling the deltas (f.ex. to update the changes in the memory table in a SQL database etc.) CheckPoint method added. Fixes/Enhancements: Fixed bug in BinarySearch which also caused the infamous idelete<0 bug. GetByFieldNames (TkbmIndexes) changed to be case insensitive. Journal now freed on table close, not destruction. Fixed bug in _InternalCompareRecords which could affect Master/Detail setups. _InternalSaveToStream and _InternalSaveToBinaryStream internals changed (should be faster). _InternalSaveToBinaryStream changed in several places to accomodate saving versioning delta's. Whats new in v. 2.23 -------------------- Fixes/Enhancements: Fixed several index related bugs. The infamous idelete<0 bug should have been solved by now. Enhanced checks on table active on altering indexes. Whats new in v. 2.22 -------------------- Fixes/Enhancements: Fixed Sort/SortOn problem with CancelRange. Fixed compile problem when defining BINARY_FILE_1_COMPATIBILITY. Whats new in v. 2.21 -------------------- Fixes/Enhancements: Fixed backward compatibility with D3. Whats new in v. 2.20 -------------------- New stuff: NEW - NEW LICENSE AGREEMENT WHICH YOU MUST READ AND AGREE TO! NEW - Added journaling schemes for records. Fixes/Enhancements: Fixed quite serious bug in PrepareKeyRecord affecting SetKey, EditKey, FindKey, GotoKey, FindNearest methods. Enhanced record validation scheme. Can now check for memory overruns. Whats new in v. 2.11 -------------------- New stuff: NEW - UniqueRecordID, Record level Tags. Fixes/enhancements: Fixed D4/BCB4 compatibility. The new filter capabilities is only available in D5. Whats new in v. 2.10 -------------------- New stuff: NEW - Full filtering capabilities supported using both OnFilterRecord and also dynamically using a Filter property. Fixes/enhancements: Fixed bug in PrepareKeyRecord. Whats new since v. 1.37 (the last 1.xx version) ------------------------------------------------ New stuff: NEW - Unlimited number of real Indexes controlled by IndexDefs NEW - Several index related support properties and methods. NEW - AttachTo property to share data between several memorytables. NEW - AttachedAutoRefresh property to set automatic refresh of all dataaware controls on all attached memorytables. NEW - TkbmMemTable is now thread safe. NEW - Borrow structure from another dataset in the designer. NEW - Enhanced performance in several situations. NEW - Internal record validity checks. NEW - Method PackTable to finally remove 'deleted' records. NEW - Support for ftADT and ftArray fieldtypes for D4/D5/BCB4 NEW - RangeActive property to determine if a range is active. NEW - Demo project updated. NEW - Threaded demo project added. NEW - Saveoptions for Commatext property. NEW - UpdateToDataSet for syncing data with another dataset. Fixes/enhancements: Fixed ftBytes bug. Fixed Enable/Disablecontrols bug. Fixed bugs in SearchRecordID. Fixed/enhanced bookmarks. Enhanced Lookup. Enhanced CancelRange. Fixed D4 installation. Fixed CompareBookmarks. Fixed BCB4 installation. Examples of other interesting stuff included: Threaded dataset controller, Full TDataset compatibility, CompareBookmark,BookmarkValid,SetKey,EditKey,GotoKey,FindKey,FindNearest,SetRange, SetRangeStart,SetRangeEnd,EditRangeStart,EditRangeEnd,ApplyRange,CancelRange, Autosorting on insert/edit, binary save/load incl. structure and compression, ftLargeInt, Blobs,D5 component editor, French/German/English/Russian/Portoguese/ Brasilian/Italian/Spanish/Romanian/Slovakian translations and alot more. Documentation: Please check out the demo projects, and read the comments in the top of the sourcefile. History: Please look in top of the sourcefile. Contributors: Claude Rieth from Computer Team sarl (clrieth@team.lu) Wagner ADP (wagner@cads-informatica.com.br) Charlie McKeegan from Task Software Limited (charlie@task.co.uk) James Baile (James@orchiddata.demon.co.uk) Travis Diamond (tdiamond@airmail.net) Claudio Driussi (c.driussi@popmail.iol.it) Andrius Adamonis (andrius@prototechnika.lt) Pascalis Bochoridis from SATO S.A Greece (pbohor@sato.gr} Thomas Bogenrieder (tbogenrieder@wuerzburg.netsurf.de) Paulo Conzon (paolo.conzon@smc.it) Arséne von Wyss (arsene@vonwyss.ch) Raymond J. Schappe (rschappe@isthmus-ts.com) Bruno Depero (bdepero@usa.net) Denis Tsyplakov (den@vrn.sterling.ru) Jason Wharton (jwharton@ibobjects.com) Paul Moorcroft (pmoor@netspace.net.au) Jirí Hostinský (tes@pce.cz) Roberto Jimenez (mroberto@jaca.cetuc.puc-rio.br) Azuer (blue@nexmil.net) Lars Søndergaard (ls@lunatronic.dk) Dirk Carstensen (D.Carstensen@FH-Wolfenbuettel.DE) I. M. M. Vatopediou (monh@vatopedi.thessal.singular.gr) Kanca (kanca@ibm.net) Fernando (tolentino@atalaia.com.br) Albert Research (albertrs@redestb.es) John Knipper (knipjo@altavista.net) Vasil (vasils@ru.ru) Javier Tari Agullo (jtari@cyber.es) Roman Olexa (systech@ba.telecom.sk) Sorin Pohontu (spohontu@assist.cccis.ro) Edison Mera Menéndez (edmera@yahoo.com) Dick Boogaers (d.boogaers@css.nl) Stas Antonov (hcat@hypersoft.ru) Francisco Reyes (francisco@natserv.com) Roman Krejci (info@rksolution.cz) Mike Cariotoglou (Mike@singular.gr)