TDbf manual
Micha Nelissen
11th September 2004
Contents
1 Introduction 5
2 Class structure 6
2.1 TDbf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 TDbfFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 TDbfFieldDef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3 File types 7
4 Expressions 7
5 FAQ 8
5.1 Does TDbf support images? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.2 Why do deleted records not show up when using ixPrimary indexes? . . . . . 9
5.3 How can I make an index on a TDateTime field? . . . . . . . . . . . . . . . . 9
5.4 How can I sort the display of the records differently? . . . . . . . . . . . . . . 9
5.5 Why does RecordCount return too many records? . . . . . . . . . . . . . . . 9
5.6 How to know if a record is currently being edited by another user? . . . . . . 10
5.7 How to handle different character sets and locale sorting? . . . . . . . . . . . 10
1
5.8 How to undelete records? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.9 How can I restructure a table? . . . . . . . . . . . . . . . . . . . . . . . . . . 10
6 Methods 10
6.1 GetFieldData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
6.2 Resync . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6.3 CreateBlobStream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6.4 Translate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6.5 ClearCalcFields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
6.6 CompareBookmarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
6.7 CheckDbfFieldDefs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
6.8 AddIndex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
6.9 RegenerateIndexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.10 CancelRange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.11 SearchKey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.12 SetRange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6.13 PrepareKey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6.14 ExtractKey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6.15 UpdateIndexDefs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6.16 GetFileNames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6.17 GetIndexNames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6.18 GetAllIndexFiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6.19 TryExclusive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6.20 EndExclusive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6.21 LockTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6.22 UnlockTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2
6.23 OpenIndexFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
6.24 DeleteIndex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
6.25 CloseIndexFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
6.26 RepageIndexFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
6.27 CompactIndexFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.28 Locate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.29 LocateRecord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.30 IsDeleted . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.31 Undelete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6.32 CreateTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6.33 CreateTableEx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6.34 CopyFrom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6.35 RestructureTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.35.1 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.36 PackTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.37 EmptyTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.38 Zap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.39 InitFieldDefsFromFields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
7 Properties 20
7.1 AbsolutePath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
7.2 DbfFieldDefs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
7.3 PhysicalRecNo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
7.4 LanguageID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
7.5 LanguageStr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
7.6 CodePage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3
7.7 ExactRecordCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
7.8 DbfFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
7.9 UserStream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
7.10 DisableResyncOnPost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
7.11 DateTimeHandling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
7.12 Exclusive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
7.13 FilePath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
7.14 FilePathFull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
7.15 Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
7.16 Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
7.17 IndexDefs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
7.18 IndexFieldNames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
7.19 IndexName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
7.20 MasterFields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
7.21 MasterSource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
7.22 OpenMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
7.23 ReadOnly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
7.24 ShowDeleted . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
7.25 Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
7.26 StoreDefs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
7.27 TableName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
7.28 TableLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
7.29 UseFloatFields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
7.30 Version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
7.31 BeforeAutoCreate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4
7.32 OnCompareRecord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
7.33 OnFilterRecord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
7.34 OnLanguageWarning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.35 OnLocaleError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.36 OnIndexMissing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.37 OnCopyDateTimeAsString . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.38 OnTranslate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1 Introduction
TDBF is a freeware native data access component for all Borland Delphi language compatible
environments. This includes Delphi, C++Builder, Kylix and FreePascal. It allows you to
create very compact database programs which don’t need any special installer programs. The
DB engine code is compiled right into your executable. It has the following features:
• Works without the Borland Database Engine.
• Allows the use of all dBASE native type (character, numeric, logical, date, and memo).
See property TableLevel.
• Memo files are supported, both text and binary so you can use fields with no size limit.
• File format 100% compatible with dBASE III+ or dBASE IV or dBASE for Windows.
• Support for Clipper and Visual FoxPro tables.
• Restructuring existing tables to drop, add or modify a current table structure while
retaining table data.
• Multi-user access through BDE compatible locking. Only 1 user can lock a particular
record for writing, but multiple users can read the record.
• Index support available for fast sorting, searching and ranging of big tables. Indexes
supported include NDX and MDX index files.
• Expression parser for both indexes and filters.
• OS dependant multi-codepage and multi-locale support. This allows you to read and
write tables in different codepages than your OS and to specify a sort order better suited
for your language or locale. Currently, this is not yet supported on the Linux OS.
5